python leetcode 125. 验证回文串 [简单题]

1. 读懂题目

2. 分析,推导解法,产生思路。

解题思路:双指针方式遍历并比较;

注意:需移除非字母数字字符,可直接调用python内置函数;

isalnum(字符是字母数字);isalpha(字符是字母);isdigit(字符是数字)

直接转化为小/大写比较比直接比较简单些。

'a'-'A'不能直接运算,需要ord()函数进行转换,较麻烦;

3.代码实现

class Solution(object):
    def isPalindrome(self, s):
        """
        :type s: str
        :rtype: bool
        """
        l,r = 0,len(s)-1
        # cha = 'a'-'A' # 小写在后
        while l < r:
            # 处理空格、逗号等非字母数字字符
            # while l < r and ('A' < s[l] < 'Z' or 'a' < s[l] < 'z'):
            # 直接调用python内置函数:isalnum(字符是字母数字);isalpha(字符是字母);isdigit(字符是数字)
            while l < r and not s[l].isalnum():
                l = l + 1
            while l < r and not s[r].isalnum():
                r = r- 1
            # s[i]为大写or小写; s[i]&s[j]大/小写;s[i]大写&s[j]小写; s[i]小写&s[j]大写;
            # 都转化为小写还是直接比?
            # 都转化为小写字母,再比较
            if l < r  and s[l].lower() != s[r].lower():
                return False
            l,r =l+1, r-1
        return True

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值