每天一题LeetCode【第7天】

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天】》 里面的思想有相近之处~

你可能感兴趣的:(每天一题LeetCode【第7天】)