T9. Palindrome Number【Easy】
题目
确定一个整数是否是回文。不要用到额外的空间。
思路
写在注释里~(我好懒哈哈哈)
好吧,还是举个例子吧。
示例一: 12321 ,rev 为 123,x 为 12,x==rev/10=12,返回 true
示例一: 123321 ,rev 为 123,x 为 123,x==rev=123,返回 true
代码
代码取自 Top Solution,稍作注释
默默感慨这代码真的好短
public boolean isPalindrome(int x) {
//因为是整数的回文,所以小于0以及不为0时末尾为0(和首位一定不同)肯定返回false
if (x<0 || (x!=0 && x%10==0)) return false;
int rev = 0;
//通过x%10得到尾数,通过rev*10不断它向前推,x = x/10使x不断缩短,x>rev来控制是只要推一半
while (x>rev){
rev = rev*10 + x%10;
x = x/10;
}
//当偶数回文时x=rev是true,当奇数回文时时x==rev/10是true
return (x==rev || x==rev/10);
}
补充
可以看看之前写的 《每天一题LeetCode【第6天】》 里面的思想有相近之处~
网友评论