9.回文数

![image-20200610185502812](D:\01Typora\LeetCode\9.回文数.assets\image-20200610185502812.png

转字符串 对称比较

思路

  • 负数一定不是回文数
  • 将数字num转换为字符串s,根据回文数的对称特点,逐次比较(s.length/2次)

代码

//10ms 
public static boolean isPalindrome(int x) {
        if (x < 0) return false;
        String s = String.valueOf(x);
        int len = s.length();
        for (int i = 0; i < len / 2; i++) {
            if ((s.charAt(i) ^ s.charAt(len - 1 - i)) != 0) {
                return false;
            }
        }
        return true;
    }

进阶

思路

  • 从低位往高位截取,直到截取部分的值>=剩余部分的值,具体看代码好理解。
  • 比较两部分值是否相同。
  • 注意特殊情况,当num%10==0时一定不是回文数。

代码

//9ms
public static boolean isPalindrome(int x){
    if(x<0||(x%10==0&&x!=0)) return false;
    int revNum=0;
    while(x>revNum){
        revNum=revNum*10+x%10;
        x/=10;
    }
    return x==revNum||x==revNum/10;
}

参考链接:

官方题解

posted @ 2020-06-10 19:18  YH_Simon  阅读(96)  评论(0编辑  收藏  举报