参考了讨论区的解决方案,使用临时变量倒序相加,同时原数右移,巧妙地避免了溢出。避免了转化成字符串的时空开销。
func isPalindrome(x int) bool {
if x<0 || (x!=0 && x%10==0) {
return false
}
sum := 0
for sum < x {
sum = sum*10 + x%10
x /= 10
}
return sum==x || sum/10==x
}