剑指Offer之判断一个数是否是回文数
程序员文章站
2024-03-22 16:18:52
...
整体思路就是取数字中最高位和最低位来比较,然后再分别向下取数循环此操作,如果其中有一个不相等,返回false
否则返回true,
下面以一个数字来具体说明
4 5 6 5 4
1.首先先取数字中的最高位,其他位都为0的数help,help是这样算的:
int help=1;
while(n/hlep>=10){
help*=10;
}
2.n为给的数,也就是help最终变为40000,然后进行
n/help=4,//取数字最高位的数字
n%10=4//取数字最低为的数字
判断n/help和n%10的值是否相等,如果不相等返回false,如果相等,反复执行操作2,但是要更新n的值和help的值
更新为:
以上述的数字为例子,n为45654 % 1000 /10,也就是565
n=(n %help)/10
help=help/100,help变为100
public static boolean process(int num){
if(num<0){
return false;
}
int help=1;
while(n/help>=10){
help*=10;
}
while(n!=0){
//取数字最高位的数字和最低位数字进行比较
if(n/help!=n%10){
return false;
}
//去除上次已经比较过的最高位数字和最低位数字
n=(n%help)/10;
help/=100;
}
return true;
}