Python3回文字符串校验代码异常:非回文串返回True问题排查
回文校验代码问题排查
核心错误原因
你代码的问题出在字符串拼接环节:
string.join(x)的用法不符合预期。str.join(iterable)是Python的字符串拼接方法,作用是将可迭代对象iterable里的所有元素,用调用方法的字符串str作为分隔符拼接为新字符串,该方法不会修改原字符串变量,只会返回新的拼接结果。- 你的代码没有接收
join方法的返回值,所以string变量始终是初始化的空字符串'',空字符串反转后还是空串,因此无论输入什么内容,判断结果永远是True。你测试第一个用例返回正确只是巧合,因为第一个用例本身的预期结果就是True。
修复方案
把string.join(x)替换为直接拼接字符串的逻辑即可,修复后完整代码如下:
class Solution: def isPalindrome(self, s: str) -> bool: string='' ss=s.lower() for x in ss: if x.isalnum(): string += x bol = string == string[::-1] return bol
修复后测试结果
- 输入
"A man, a plan, a canal: Panama",返回True,符合预期 - 输入
"race a car",返回False,符合预期
内容的提问来源于stack exchange,提问作者Jaswanth Reddy
相关产品推荐
相关产品推荐

