LeetCode solutionsLeetcode模拟面试算法提高之LeetCode刷题

LeetCode 680. 验证回文字符串 Ⅱ

2020-06-06  本文已影响0人  freesan44

题目

给定一个非空字符串 s,最多删除一个字符。判断是否能成为回文字符串。

示例 1:

输入: "aba"
输出: True
示例 2:

输入: "abca"
输出: True
解释: 你可以删除c字符。

注意:

字符串只包含从 a-z 的小写字母。字符串的最大长度是50000。

解题思路

如果出现不对称,就检测缩减一个字符后的数组是否对称

class Solution:
    def validPalindrome(self, s: str) -> bool:
        # #常规解法(超出时间)
        # sList = list(s)
        # sLen = len(s)
        # if sList[:] == sList[::-1]:
        #     return True
        # for i in range(sLen):
        #     temp = sList.copy()
        #     temp.pop(i)
        #     if temp[:] == temp[::-1]:
        #         return True
        # return False
        #双指针
        left = 0
        right = len(s)-1
        while left < right:
            if s[left] == s[right]:
                left += 1
                right -= 1
            elif s[left+1:right+1] == s[left+1:right+1][::-1] or s[left:right] == s[left:right][::-1]:
                print(s[left+1:right+1])
                print(s[left:right])
                return True
            else:
                return False
        return True
上一篇下一篇

猜你喜欢

热点阅读