9. 回文数 - LeetCode

9. 回文数

题目链接

反转字符串

class Solution {
    public boolean isPalindrome(int x) {
        return String.valueOf(x).equals(new StringBuilder().append(x).reverse().toString());
    }
}

利用自带的方法反转字符串,速度较慢。

转String逐个判断

class Solution {
    public boolean isPalindrome(int x) {
        String s = String.valueOf(x);
        int n = s.length();
        int i = 0, j = n - 1;
        while(i <= j){
            if(s.charAt(i++) != s.charAt(j--)){
                return false;
            }
        }
        return true;
    }
}

将数字转成String,从两边逐个判断是否回文。

翻转一半

class Solution {
    public boolean isPalindrome(int x) {
        if (x < 0 || (x % 10 == 0 && x != 0)) {
            return false;
        }
        int reverse = 0;
        while(x > reverse){
            reverse = reverse * 10 + x % 10;
            x /= 10;
        }
        return x == reverse || x == reverse / 10;
    }
}

直接在数字上操作,将后一半翻转后与前一半对比。这里需要注意有负号的情况以及有前缀0的情况,最后判断的时候也要考虑位数是奇数的情况。

posted @ 2021-01-22 10:41  一天到晚睡觉的鱼  阅读(46)  评论(0)    收藏  举报