LeetCode Valid Palindrom

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) 来获得相关源码。

你可能感兴趣的:(LeetCode,算法,python,回文,palindrom)