假设我们有一个包含字母数字值和符号的字符串。也有小写和大写字母。我们仅通过考虑小写字母(将大写字母转换为小写字母)来检查字符串是否形成回文,其他符号(例如逗号,空格)将被忽略。
假设字符串像“一个人,一个计划,一条运河:巴拿马”,那么考虑这些规则,它将是“ amanaplanacanalpanama”。这是回文。
为了解决这个问题,请遵循以下步骤-
定义x =“”
读取str中的每个字符c-
如果c是小写字母或数字,则将c附加到x
否则c是一个大写字母,然后将其简单地转换为小写并在x之后追加
如果x是回文,则返回True,否则返回False
让我们看一下实现以获得更好的理解
class Solution(object): def isPalindrome(self, s): """ :type s: str :rtype: bool """ x = "" diff = ord('a') - ord('A') for i in s: if ord(i)>=ord('a') and ord(i)<=ord('z') or ord(i)>=ord("0") and ord(i)<=ord("9"): x+=i elif ord(i)>=ord('A') and ord(i)<=ord('Z'): i = chr(diff+ord(i)) x+=i #print(s) #print(x) return x == x[::-1] ob1 = Solution()print(ob1.isPalindrome("A Man, a Plan, a Canal: Panama"))
s = "A Man, a Plan, a Canal: Panama"
输出结果
true