网站右下角弹出广告代码,自学网页设计难吗,深圳南山网站建设,英文网站建设注意什么难度
简单
题目
如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后#xff0c;短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。 字母和数字都属于字母数字字符。 给你一个字符串 s#xff0c;如果它是 回文串 #xff0c;返回 true_ …难度
简单
题目
如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。 字母和数字都属于字母数字字符。 给你一个字符串 s如果它是 回文串 返回 true_ 否则返回 false _。
示例 1
输入: s “A man, a plan, a canal: Panama” 输出true 解释“amanaplanacanalpanama” 是回文串。
示例 2
输入s “race a car” 输出false 解释“raceacar” 不是回文串。
示例 3
输入s 输出true 解释在移除非字母数字字符之后s 是一个空字符串 “” 。 由于空字符串正着反着读都一样所以是回文串。
提示
1 s.length 2 * 105s 仅由可打印的 ASCII 字符组成
思路
1、将所有大写字符转换为小写字符再移除所有非字母数字字符 2、使用双指针left 指向字符串最左边right 指向最右端 3、判断 left 和 right 所指的值是否相同如果相同 left 向右移动一位right 向左移动一位直到 left 和 right 相遇则字符串就是回文串如果没有相遇字符串就不是回文串。
代码
class Solution:def isPalindrome(self, s: str) - bool:# 去掉非字母数字字符tmp [x.lower() for x in s if x.isalnum()]left 0right len(tmp) - 1# 如果字符长度时奇数不需要比较中间位置# 如果字符长度时偶数没有中间位置# 所以使用进行比较while left right:if tmp[left] tmp[right]:left 1right - 1else:return Falsereturn Trueif __name__ __main__:s 1A man, a plan, a canal: Panama1s raca a car# s so Solution()res so.isPalindrome(s)print(res)