Valid Palindrome
基础,基础
class Solution(object):
def isPalindrome(self, s):
"""
:type s: str
:rtype: bool
"""
lst = [x.lower() for x in s if x.isalnum()]
start, end = 0, len(lst) - 1
while start < end:
if lst[start] != lst[end]:
return False
start += 1
end -= 1
return True
可以利用Python写个更简单的版本
class Solution(object):
def isPalindrome(self, s):
"""
:type s: str
:rtype: bool
"""
strings = [char.lower() for char in s if char.isalnum()]
n = len(strings)
return all(strings[i] == strings[n - i - 1] for i in xrange(n))
Valid Palindrome II
稍微改了一下题目变成求一个编辑距离之内的对称字符串了,这里还是一样的思考方式,两指针对进,如果指向的字符不相等,则肯定有一个字符要被丢出去,然后分别对这两种情况再继续比较一下,如果这两种都不行,那就不是一个编辑距离之内的对称字符串了
class Solution(object):
def validPalindrome(self, s):
"""
:type s: str
:rtype: bool
"""
n = len(s)
start, end = 0, n - 1
while start < end and s[start] == s[end]:
start += 1
end -= 1
if start >= end:
return True
return all(s[i] == s[end - i + start - 1] for i in xrange(start, end)) or \
all(s[i + 1] == s[end - i + start] for i in xrange(start, end))