JAVA算法(一) -- 经典回文数(取出任意范围的回文数)

时间:2021-09-01 13:18:17

以前取出指定范围的回文数往往用

// for (int i = 10000; i <= 99999; i++) {
// int a = i / 10000;// b=1
// int b = i % 10000 / 1000;// b=5
// int c = i % 1000/100;// c= 3
// int d = i%100/10;
// int e = i%10;
// if (a == e && b==d) {
// System.out.println(i);
// }
// }

取出每个数在将他们放在一起判断是否相等的办法 . 但是这种办法如果将 i 的范围改为动态的 , 如: 100 ~ 9999 , 就会出现问题 . 也不支持手动输入一个数 , 判断它是否为回文数. 之后偶然又碰见了这道题 , 当时想着把能不能把算法优化一下 , 写一个灵活判断回文数的 Demo 出来 . 然后就有了下面的例子 .

    public static void main(String[] args) {


for (int i = 100; i <= 99999; i++) {
String str = String.valueOf(i);
//如果是水仙花数则输出
if(isLength(str,str.length())){
System.out.println(i);
}else{
//System.out.println("false");
}
}
}
public static boolean isLength(String str,int length){
boolean flag = false;
char[] chars = str.toCharArray();
int count = 0;
for (int i = 0; i < length; i++) {
//首尾依次判断,每一次判断count + 1 当count值和length相等时,证明首尾两两比较全部相等
if(chars[i] == chars[chars.length-i-1]){
count++;
// flag = true;
}else{
break;
}
}
//输出
if(count==length){
flag = true;
}
return flag;
}