题目
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
https://leetcode-cn.com/problems/palindrome-number/description/
进阶:
你能不将整数转为字符串来解决这个问题吗?
分析
思路1
首先排除负数情况
对正数:整数转成字符串,翻转字符串,判断是否和原数相等。依照正序和逆序逐次进行比照,判断是否相同。(这个蠢哭的想法显然是来自c语言初级的数组思维…)
code 40ms
class Solution:
def isPalindrome(self, x: int) -> bool:
if x<0:
return False
else:
rev_x = int(str(x)[::-1])
if rev_x == x:
return True
else:
return False
翻转整数再7#中练过
思路2
来自高票答案,不必转化成字符串。
code 40ms
class Solution:
def isPalindrome(self, x: int) -> bool:
if x < 0:
return False
ranger = 1
while x / ranger >= 10: # 判断x的位数
ranger *= 10
while x:
left = x / ranger # 左取整
right = x % 10 # 右取余
if left != right: # 判断是否相等
return False
x = (x % ranger) / 10 # 将x去掉最高位和最低位,更新x
ranger /= 100
Summary
对整数常用操作有取最低位-取余、取最高位、转二进制
本文探讨了如何判断一个整数是否为回文数,提供了两种不同的算法思路:一种是将整数转换为字符串并翻转比较;另一种是通过数学方法直接在整数上操作,避免了字符串转换,提高了效率。
507

被折叠的 条评论
为什么被折叠?



