吴师兄学算法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