回文数 难度:简单

自己的写法

class Solution {
    
    
    public boolean isPalindrome(int x) {
    
    
        if(x<0){
    
    
            return false;
        }
        String a = Integer.toString(x);
        String b = new StringBuilder(a).reverse().toString();
        if(a.equals(b)){
    
    
            return true;
        }else{
    
    
            return false;
        }

    }
}

优解

class Solution {
    
    
    public boolean isPalindrome(int x) {
    
    
        // 0 是回文数
        if (x == 0) return true; 
        // 负数和除 0 以外以 0 结尾的数都不是回文数
        if (x < 0 || x % 10 == 0) return false; 
        // 记录 x 后一半的翻转,如 x = 4334,reversed = 43;x = 54345,reversed = 54
        int reversed = 0; 
        while (x > reversed) {
    
    
            reversed = reversed * 10 + x % 10;
            x /= 10;
        }
        // x有偶数位和奇数位两种情况
        return reversed == x || reversed / 10 == x;
    }
}

总结

有些题,其实只有考虑一半的情况就可以解决了,不用整个去算。注解已解释这段代码

猜你喜欢

转载自blog.csdn.net/please93/article/details/121538516