吴师兄学算法day07 双指针 125. 验证回文串

题目:125. 验证回文串

易错点:

  • isaplha()
  • isdigit()
  • lower()
  • 要熟悉,挺有用的。

我的代码:

class Solution:
    def isPalindrome(self, s: str) -> bool:
        ans = ''
        for i in s:
            if i.isalpha() or i.isdigit():
                ans+= i.lower() # 转化为小写
        right = len(ans) -1
        for left in range(len(ans)//2):
            if ans[right] == ans[left]:
                pass
            else:
                return False
            right -=1
        return True

老师的代码:

class Solution:
    def isPalindrome(self, s: str) -> bool:

        # isalnum() 方法检测字符串是否由字母和数字组成
        # 转换为字符串数组的形式
        xArray = "".join(ch.lower() for ch in s if ch.isalnum())

        # 左边索引的位置在 0 
        left = 0

        # 右边索引的位置在 len(xArray) - 1
        right = len(xArray) - 1

        # 两个索引向内移动
        # left 向右移动
        # right 向左移动
        while left <= right:
            # 判断这两个元素值是否相同
            if xArray[left] != xArray[right]:
                # 如果不同,直接返回 False
                return  False

            # 否则,left 向右移动
            left += 1
        
            # right 向左移动
            right -= 1
        
        return True

扩展写法:

dic = set("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ")
ans = ''.join(i.lower() for i in s if i in dic)

总结:

  • 居然还有isalnum()这种写法。
  • ans = ''.join(i.lower() for i in s if i.isalnum())
  • ans = ''
    for i in s:
        if i.isalnum():
            ans += i.lower()
    print(ans)

 

参考:

https://r07na4yqwor.feishu.cn/docx/S2P0dqQlvoMxwqxfOkicgI4NnBb

posted @ 2024-01-14 22:45  o蹲蹲o  阅读(1)  评论(0编辑  收藏  举报