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;
}
参考链接: