码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode-680-验证回文字符串 Ⅱ

时间:2020-11-20 11:39:00      阅读:5      评论:0      收藏:0      [点我收藏+]

标签:idp   字符   验证   str   双指针   假设   一个   代码   leetcode   

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

解题思路:
判断是否回文字符串:isPalindrome = lambda x: x==x[::-1],即将字符串x倒置,还和原来的一样;
如何判断删除一个字符后还是回文字符串?假设字符串s=‘abccbca‘,当用双指针从两端向中间游走,如果两指针所指字符不相等,考虑删除其中之一,再判断是否回文字符串。
该例中当left=1和right=5时,删除其中之一再判断,只需判断left和right之间的字符串是否回文,生成的新的两个字符串分别为删除右边字符:s[left:right],删除左边字符:s[left+1:right+1]。
Python3代码:

class Solution:
def validPalindrome(self, s: str) -> bool:
left = 0
right = len(s)-1
isPalindrome = lambda x : x == x[::-1]

    while left<=right:
        if s[left] != s[right]:
            return isPalindrome(s[left:right]) or isPalindrome(s[left+1:right+1])
        else:
            left+=1
            right-=1
    return True

LeetCode-680-验证回文字符串 Ⅱ

标签:idp   字符   验证   str   双指针   假设   一个   代码   leetcode   

原文地址:https://www.cnblogs.com/zhengxiang88/p/13956207.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!