每日一道leetcode--回文数

今天是leetcode上比较简单一道--回文数

给一个int数 x ,正序和倒序是一样的则叫回文数 如 123 ,12321。

根据第一印象我们可以想到用Java自带的StringBuilder 类中 reverse()方法
public boolean isPalindrome1(int x) {
        StringBuilder res = new StringBuilder();
        String str = String.valueOf(x);
        res.append(str);
        if(res.reverse().toString().equals(str)){ 
     //判断转换后的与原来的是否一致
            return true;
        }else {
            return false;
        }
    }

然而着实简单了些,而且利用StringBuilder类,又需要了额外的空间,效率降低。我们需要考虑不用转成String来实现它

 //当x < 0 有负号肯定不符合,同样如何是10的倍数尾数为0 只有0符合
public boolean isPalindrome2(int x) {
        if(x <0 || (x %10==0 && x !=0)){
            return false;
        }
        int reverseX = 0;
        //x位数在减少  reverseX位数在增大,x为偶数长度,reverseX 和x 长度相等
        // x为奇数函数那么 会有 reverseX * 10 + 0;
        while (x > reverseX){
            //整数里  x% 10得到尾数
            //这样 得到反转的数字 reverseX
            // x/= 10 代表x去掉末尾的数字,类似于弹栈
            reverseX = reverseX * 10 + x %10; 
            x = x /10;
        }
       
        return reverseX == x || x == reverseX /10;
}
        

可以用整数的% 和/ 逐个谈出数字 然后比较

你可能感兴趣的:(每日一道leetcode--回文数)