LeetCode解题之Valid Palindrom
原题
判断一个字符串是否是回文字符串,只考虑字母和数字,并且忽略大小写。
注意点:
- 空字符串在这里也定义为回文串
例子:
输入: s = “A man, a plan, a canal: Panama”
输出: True
输入: s = “race a car”
输出: False
解题思路
先将字符串中的非字母和数字的字符去除,同时把所有的字母转换为小写,再判断新的字符串与自己翻转的字符串是否相等。这种方法代码比较简练,也可以采用双指针的方法从两端开始遍历数列来进行判断。
AC源码
class Solution(object):
def isPalindrome(self, s):
"""
:type s: str
:rtype: bool
"""
alphanumericS = [c for c in s.lower() if c.isalnum()]
return alphanumericS == alphanumericS[::-1]
if __name__ == "__main__":
assert Solution().isPalindrome("A man, a plan, a canal: Panama") == True
assert Solution().isPalindrome("race a car") == False
欢迎查看我的Github (https://github.com/gavinfish/LeetCode-Python) 来获得相关源码。
时间: 2024-10-12 02:57:13