Code Bye

一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同

一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
解决方案

10

本人的想法是把他变成StringBuilder ,再用equals()比较原来的跟reverse()后的能否返回true,true就是你想要的回文!

20

看你编程的目的,假如要考虑空间和时间的最优解就不容易。
一般做做的话,先转成string,判断和他的倒序能否相同,相同的话即是回文数。
JAVA类库里应该也有判断能否有回文数的方法。

10

引用:
Quote: 引用:

]不错。

今天在leetcode刚刚遇到这个题。要求不开辟新的内存。所以本人就没用StringBuilder来做了。

package com.leetcode;
public class Solution {
public static boolean isPalindrome(int x) {
if(x<0) return false;
if(x<10) return true;
int len = 1;
//算出能被X除10的最大指数。例如X=12311,len=10000
while(x/len >= 10){
len *=10;
}
//两头向中间遍历取值
for(int b=len,c=1; b>=10; b/=10,c*=10){
int y = x/b%10; //关键理解 y 和 z怎么取值就噢了!
int z = x/c%10;
//判断能否相等
if(y != z) return false;
}
return true;
}
public static void main(String [] args){
//int num = (int)(Math.random()*Math.pow(10, 5));
int num = 775828577;
System.out.println("输入数字为:"+num);
System.out.println("判断能否回文数字:"+isPalindrome(num));
}
}

循环条件b>=10存在重复判断,b>=c效率更高。


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同