Java解决数位递增的数
01 题目
-
一个正整数如果任何一个数位不大于右边相邻的数位,则称为
个数位递增的数。- 例如 1135 是一个数位递增的数,而 1024 不是一个数位递增的数。
-
给定正整数n,请问在整数 1 至 n 中有多少个数位递增的数?
-
输入描述
- 输入的第 行包含一个整数n(1 < n < 10)
-
输出描述
- 输出一行包含一个整数,表示答案
-
输入输出样例
-
输入
30 -
输出
26
-
-
运行限制
- 最大运行时间: 1s
02 知识点
- 数学
- 循环
03 我的题解思路
public class numberIncreasing {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n=scan.nextInt();//获取正整数n
int rs=0;//返回值,记录合格的数
for (int i = 1; i < n; i++) {//循环n次,找到合格的值
if(checkMe(i)) {
rs++;
}
}
System.out.println(rs);//输出
scan.close();
}
public static boolean checkMe(int n) {
int right=n%10;//先获得个位的值
n/=10;//除十方便循环时获取十位
while(n>0) {
int left=n%10;//获取十位
if(left>right) {//找不合格的值,不合格退出循环
return false;
}
n/=10;//除十获取下一位
right=left;//右边等于左边,值左移
}
return true;//循环结束,这个值符合要求
}
}