码迷,mamicode.com
首页 > 编程语言 > 详细

Python 解LeetCode:680. Valid Palindrome II

时间:2017-10-23 18:06:16      阅读:287      评论:0      收藏:0      [点我收藏+]

标签:bsp   etc   self   遇到   不一致   size   代码   als   str   

        题目:给定一个字符串,在最多删除一个字符的情况下,判断这个字符串是不是回文字符串。

       思路:回文字符串,第一想到的就是使用两个指针,前后各一个,当遇到前后字符不一致的时候,有两种情况,删除前面字符或者删除后面字符。由于删除一个字符后剩下的仍旧是字符串,可以直接递归处理了。然后用一个flag,当达到2时,就可以递归结束了。

      代码如下:

 1 class Solution(object):
 2 
 3     def isPalindrome(self, s, left, right, flag):
 4         while left < right:
 5             if s[left] == s[right]:
 6                 left += 1
 7                 right -= 1
 8             else:
 9                 if flag == 1:
10                     return False
11                 flag = 1
12                 return (self.isPalindrome(s, left+1, right, flag) or
13                         self.isPalindrome(s, left, right-1, flag))
14         return True
15 
16     def validPalindrome(self, s):
17         """
18         :type s: str
19         :rtype: bool
20         """
21         return self.isPalindrome(s, 0, len(s)-1, 0)

 

Python 解LeetCode:680. Valid Palindrome II

标签:bsp   etc   self   遇到   不一致   size   代码   als   str   

原文地址:http://www.cnblogs.com/qiaojushuang/p/7717657.html

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