如何将LeetCode 9.回文数自定义代码转换为LeetCode提交格式?
LeetCode 9. 回文数问题:代码格式转换与TypeError错误解决
问题背景
作为编程初学者,我写出了回文数的测试代码,但不知道如何将其转换为LeetCode要求的Solution类格式提交。修改代码时出现了TypeError: 'int' object has no attribute '__getitem__'错误,请求帮助。
自定义测试代码
input_string_for_test = "1155215511" bucket_1 = [] bucket_2 = [] boolean_bucket = 0 bucket_1.append(input_string_for_test) bucket_2.append(input_string_for_test[::-1]) ''' print(bucket_1) print(bucket_2) ''' if bucket_1 == bucket_2: boolean_bucket =+ 1 ''' print("PALINDROME") ''' print(bool(boolean_bucket)) else: ''' print("NO") ''' print(bool(boolean_bucket))
LeetCode要求的提交格式
class Solution(object): def isPalindrome(self, x): """ :type x: int :rtype: bool """
报错信息
TypeError: 'int' object has no attribute '__getitem__' bucket_2.append(x[::-1]) Line 12 in isPalindrome (Solution.py) ret = Solution().isPalindrome(param_1) Line 43 in _driver (Solution.py) _driver() Line 53 in <module> (Solution.py)
错误原因
报错核心是:LeetCode传入的参数x是整数类型,而[::-1]是字符串/列表的切片反转操作,整数不支持该操作,因此触发类型错误。另外你原测试代码用列表存储字符串的做法完全多余,直接比较字符串本身即可简化逻辑。
修正后的可提交代码
class Solution(object): def isPalindrome(self, x): """ :type x: int :rtype: bool """ # 负数直接返回False,负号无法对称 if x < 0: return False # 将整数转为字符串,才能使用切片反转 x_str = str(x) # 直接比较原字符串和反转后的字符串,返回布尔结果 return x_str == x_str[::-1]
代码解释
- 特殊情况处理:负数不可能是回文数,负号在开头反转后会到结尾,直接返回
False。 - 类型转换:把整数
x转为字符串x_str,这样就能用[::-1]完成反转操作。 - 简化逻辑:直接比较原字符串和反转字符串的相等性,结果就是是否为回文数的布尔值,无需额外变量存储。
内容的提问来源于stack exchange,提问作者Light_528
相关产品推荐
相关产品推荐

