当前位置: 首页 > 后端技术 > Python

LeetCode680.验证回文串II-蟒蛇

时间:2023-03-25 20:04:38 Python

680。ValidatePalindromeStringIITitle来源:https://leetcode-cn.com/problems/valid-palindrome-iiTitle给定一个非空字符串s,最多删除一个字符。判断能否成为回文串。示例1:输入:"aba"输出:True示例2:输入:"abca"输出:True解释:您可以删除字符c。注意:该字符串仅包含a-z中的小写字母。一个字符串的最大长度为50000。解题思路:如双指针题中说明,允许【最多删除一个字符】。抛开这个,我们来说说如何在不删除的情况下判断一个字符串是否为回文?同样,一个常用方法是双指针。定义双指针,一个指向开头,一个指向结尾。此时判断指针对应的字符是否相同。如果它们不同,则它们不是回文串;如果相同,则指针向中间移动,重新判断,直到指针相交。细绳。现在标题中写明允许删除一个字符。这里我们同样使用双指针的方法。双指针的初始化也是如此,一个指向开始,一个指向结束。这时候还要判断指针对应的字符是否相同。如果相同,同前面的步骤一样,指针向中间移动,继续判断,直到指针相遇。不同的是,如果当前双指针对应的字符不同,可以考虑删除一个元素,分为两种情况:删除左指针对应的字符,将左指针移动到下一个,和这时候再判断。右指针对应的字符指针对应的字符串是否为回文字符串删除右指针对应的字符,将右指针移到上一个,从左指针对应的字符重新判断tothecurrentrightpointer这个范围的字符对应的字符串是否是回文串根据前面两种情况,假设双指针定义为left和right。如果此时左右指针对应的字符不同,以上两种情况应该表示为:将左指针移动到下一位,也就是判断:在s[left+1]...s之间[右]如果字符串是回文,将指针移到前一位,判断s[left]...s[right-1]之间的字符串是否为回文。具体代码实现如下。代码实现类Solution:defvalidPalindrome(self,s:str)->bool:defcheck(left,right):#判断是否为回文whileleft