LeetCode_125_Python_验证回文串

回文串

对一个字符串来说,从前往后读和从后往前读是一样的,这样的字符串叫做回文串。注意,空字符串也是回文串。

题目要求

给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
说明:本题中,我们将空字符串定义为有效的回文串。

题目分析

根据题目要求,由于字符串中存在一些特殊符号,比如逗号、冒号等,在确认是否是回文串的过程中,这些特殊符号需要去除, 否则无法确认是否是回文串。 最后,我们需要两个指针,一前一后,同时往字符串的中间进行移动,每移动一位进行比较,如果相同就继续往下 比较,如果不同那么就跳出。

示例1:

输入: "A man, a plan, a canal: Panama"
输出: true

示例2:

输入: "race a car"
输出: false

详细代码

class Solution:
    def isPalindrome(self, s: str) -> bool:
        s = s.lower()   # 统一转换为小写
        i = 0           # 左指针
        j = len(s)-1    # 右指针
        while i < j:    
            if s[i].isalnum() and s[j].isalnum():    # 判断是否是字母或数字,isalnum()函数见拓展
                if s[i] != s[j]:           # 左不等于右时
                    return False          # 返回False
                else:                      # 否则,继续遍历
                    i += 1                 
                    j -= 1
            elif not s[i].isalnum():       # 左指针的value不是字母或者数字时,右移
                    i += 1
            else:                          # 右指针的value不是字母或者数字时,左移
                j -= 1 
        return True

验证

示例1:

输入:
solution = Solution()
s = "A man, a plan, a canal: Panama"
solution.isPalindrome(s)
输出:
True

示例2:

输入:
solution = Solution()
s = "race a car"
isPalindrome(s)
输出:
True

拓展

判断字符串是否全是数字,isdigit()函数

输入:
a = '123'
a.isdigit()    # 判断字符串a是否为数字
输出:
True

判断字符串是否全是字母,isalpha()函数

输入:
a = 'abc'
a.isalpha()    # 判断字符串a是否为字母
输出:
True

判断字符串是否全是数字和字母,isalnum()函数

输入:
a = '123abc'
a.isalnum()    # 判断字符串a是否为字母和数字
输出:
True

持续更新中。。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值