难度:简单
题目描述:
思路总结:我的思路很简单直接,就是先转换为小写,然后两头指针循环进行判断,时间复杂度O(n*62),应该还是O(n)。开销主要是判断是否是字母数字这个函数isalnum()。题解二给看一个前0.1%的大神一行写法。
题解一:
class Solution:
def isPalindrome(self, s: str) -> bool:
s = s.lower()
l,r = 0,len(s)-1
while l < r:
while l < r and not s[l].isalnum():
l += 1
while l < r and not s[r].isalnum():
r -= 1
if s[l] != s[r]:
return False
else:
l += 1
r -= 1
return True
class Solution:
def isPalindrome(self, s: str) -> bool:
pureStr = ''.join(filter(str.isalnum, s)).lower()
return pureStr == pureStr[::-1]
题解二结果:32ms,超过了99.9%。但是我提交后发现才56ms,应该是新增加了一些测试用例。