125.验证回文字串

文章介绍了两种用Python验证字符串是否为回文串的方法:一是逆向切片法,通过转换为小写、筛选字母数字、比较切片;二是双指针法,创建新字符串后用两个指针从两端向中间比较。
摘要由CSDN通过智能技术生成

​​​​​​125. 验证回文串

方法一:逆向切片法

【思路】

1.将所有的字母转换成小写

2.遍历字符串,将字母或者数字的字符与空字符串拼接,得到一个由全部小写字母组成的新字符串

3.利用切片方法判断字符串正反序是否相等,相等,则是回文字符串,否则,不是回文字符串

遍历字符串方式:普通for循环

判断字母或数字的方法:使用ord()将字符转换成十进制,再将十进制与ASCII码比较(python中只能数字与数字,字母与字母比较)

拼接字符串:使用字符串相加的方式

class Solution:
    def isPalindrome(self, s: str) -> bool:
        #使用切片
        sr = s.lower()
        st =""
        for each in sr:
            if (97 <= ord(each) <= 122) or (48 <= ord(each) <= 57):
                st += each
        if st == st[::-1]:
            return True
        else:
            return False

遍历字符串方式:普通for循环

判断字母或数字的方法:使用isalnum()方法

拼接字符串:使用字符串相加的方式

class Solution:
    def isPalindrome(self, s: str) -> bool:
        sr = s.lower()
        st =""
        for each in sr:
            if  each.isalnum():
                st += each
        return st == st[::-1]

        sr = s.lower()
        st = "".join(each for each in sr if each.isalnum())
        return st == st[::-1]

遍历字符串方式:字符串推导式

判断字母或数字的方法:使用isalnum()方法

拼接字符串:使用join()方法

class Solution:
    def isPalindrome(self, s: str) -> bool:
        #使用切片

        sr = s.lower()
        st = "".join(each for each in sr if each.isalnum())
        return st == st[::-1]

方法二:双指针

【思路】

1.将所有的字母转换成小写

2.遍历字符串(使用字符产推导式),将字母或者数字的字符与空字符串拼接,得到一个由全部小写字母组成的新字符串——(使用方法一的第三种写法)

3.使用一个指向左侧和一个指向右侧的指针(初始指向首和尾),分别向中间移动判断两指针指向元素是否相等,只要有不相等的,则不是回文字符串,否则就是回文字符串

class Solution:
    def isPalindrome(self, s: str) -> bool:
        #双指针
        sr = s.lower()
        st = " ".join(each for each in sr if each.isalnum())
        n = len(st)
        left , right = 0 , n-1
        while left < right:
            if st[left] != st[right]:
                return False
            else:
                left , right = left + 1,right - 1
        return True
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值