java实战5:判断递增数个数

java实战5:判断递增数个数

蓝桥杯的一道题,写完看了别人写的,我觉得我写的好笨啊,还是得多记些常用的函数。我这个是用数组实现的,感觉怪麻烦的。

原题:
【问题描述】
一个正整数如果任何一个数位不大于右边相邻的数位,则称为一个数位递增的数,例如1135是一个数位递增的数,而1024不是一个数位递增的数。
给定正整数 n,请问在整数 1 至 n 中有多少个数位递增的数?
【输入格式】
输入的第一行包含一个整数 n。
【输出格式】
输出一行包含一个整数,表示答案。
【样例输入】
30
【样例输出】
26
【评测用例规模与约定】
对于 40% 的评测用例,1 <= n <= 1000。
对于 80% 的评测用例,1 <= n <= 100000。
对于所有评测用例,1 <= n <= 1000000。

代码如下:

import java.util.Scanner;
public class blueSelf_5 {
     
    public static void main(String[] args) {
     
        Scanner reader=new Scanner(System.in);
        int n;
        n=reader.nextInt();
        int t=0;
        for(int p=1;p<=n;p++){
     
            String s;
            s= String.valueOf(p);
            int l=s.length();
            int m;int k;int[] a=new int[l];
            m=Integer.parseInt(s);
            k=m;
            //123
            for(int i=1;i<=l;i++){
     //1//2//3
                a[i-1]=k%10;//a[0]=3//a[1]=2//a[2]=1
                k = (k - (k % 10))/10;//k=12//k=1//k=0
            }
            judgeIncrease j=new judgeIncrease();
            if(j.ifIncrease(a)){
     
                t++;
            }
        }
        System.out.println(t);
    }
}
class judgeIncrease {
     
    public boolean ifIncrease(int[] shuzu) {
     
        if (shuzu.length == 1) {
     
            return true;
        }
        else {
     
            for (int i = 1; i <= shuzu.length-1; i++) {
     
                if (shuzu[i-1] < shuzu[i]) {
     
                    return false;
                }
            }
            return true;
        }
    }
}

运行结果:
java实战5:判断递增数个数_第1张图片

你可能感兴趣的:(java,算法,字符串,数据结构,intellij,idea)