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

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

//      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;
    }

你可能感兴趣的:(java算法,算法)