Quantcast
Channel: 书影 - Entries for the tag leetcode
Viewing all articles
Browse latest Browse all 559

[LeetCode]Valid Palindrome II

$
0
0

题目描述:

LeetCode 680. Valid Palindrome II

Given a non-empty string s, you may delete at most one character. Judge whether you can make it a palindrome.

Example 1:

Input:"aba"Output: True

Example 2:

Input:"abca"Output: TrueExplanation: You could delete the character 'c'.

Note:

  1. The string will only contain lowercase characters a-z. The maximum length of the string is 50000.

题目大意:

给定一个非空字符串s,至多删除一个字符。判断是否可以组成回文。

解题思路:

双指针(Two Pointers)

lo, hi分别指向s的左右两侧,向中心移动

当s[lo] != s[hi]时,判断删掉lo或者hi时,剩余字符串是否为回文

Python代码:

class Solution(object):
    def validPalindrome(self, s):
        """
        :type s: str
        :rtype: bool
        """
        isPalindrome = lambda s: s == s[::-1]
        strPart = lambda s, x: s[:x] + s[x + 1:]
        size = len(s)
        lo, hi = 0, size - 1
        while lo < hi:
            if s[lo] != s[hi]:
                return isPalindrome(strPart(s, lo)) or isPalindrome(strPart(s, hi))
            lo += 1
            hi -= 1
        return True

 


Viewing all articles
Browse latest Browse all 559

Trending Articles