classSolution:deftwoSum(self, numbers: List[int], target:int)-> List[int]:#由于数组是已按非递减顺序排列,因此可以对撞双指针;
le , ri=0,len(numbers)-1while le < ri :
Sum = numbers[le]+ numbers [ri]if Sum == target :return[le+1,ri+1]elif Sum < target :
le+=1else:
ri-=1
classSolution:defisPalindrome(self, s:str)->bool:
snew =list(filter(str.isalnum,s.lower()))# s.lower() 全部变小写# s.upper() 全部变大写# filter(func,iteral)内置函数,用于过滤序列# filter(str.isalpha,s) # 只保留字母# filter(str.isalnum,s) # 只保留数字和字母# filter(str.digit,s) # 只保留数字
left ,right =0,len(snew)-1while left < right :if snew[left]!= snew[right]:returnFalseelse:
left+=1
right-=1returnTrue
2.看题解
classSolution:defisPalindrome(self, s:str)->bool:# 普通双指针
left , right =0,len(s)-1while left < right :ifnot s[left].isalnum():
left+=1continueifnot s[right].isalnum():
right-=1continueif s[left].lower()== s[right].lower():
left+=1
right-=1else:returnFalsereturnTrue