请问1到10000之前,有多少升数字?(华图教育面试题)

升数字就是从左向右读,数值是依次上升的即可,比如123,1256,1389,
但是1123,165就不是。


以下是我的思路
public static void main(String[] args) {

        /**
         * 【请问1到10000之前,有多少升数字?】
         * 升数字就是从左向右读,数值是依次上升的即可,比如123,1256,1389,
         * 但是1123,165就不是。
         */

        String strZs = null;
        Integer maxLngth = 0;
        int count = 0;//数量
        for(int i = 10;i<10000;i++) {

            //将int类型转成String类型
            strZs = String.valueOf(i);
            //定义该长度到数组
            String[] arr = new String[strZs.length()];
            //遍历将字符串赋值到数组中
            for(int j = 0;j<strZs.length();j++){
                arr[j] = strZs.substring(j, j+1);
            }

            boolean flag  = isSort(arr);

            //如果是。打印,并将总数++
            if(flag){
                count++;
                System.out.println(i);
            }

        }
        System.out.println("数值是依次上升数量count="+count);
    }

    /**
     * 判断是不是生序数组
     * @param arr
     * @return
     */
    private static boolean isSort(String[] arr) {

        for(int pxIndex =0;pxIndex<arr.length-1;pxIndex++) {

           // System.out.println(arr[pxIndex]);
            if (arr[pxIndex].compareTo(arr[pxIndex + 1]) > -1) {
                return false;
            }
        }
        return true;
    }

如有更好的解决方式,请随时沟通

 

posted @ 2018-09-30 15:40  xxBai  阅读(510)  评论(0编辑  收藏  举报