一个正整数如果任何一个数位不大于右边相邻的数位,则称为一个数位递增的数,例如1135是一个数位递增的数,而1024不是一个数位递增的数。
问: 给定正整数 n,请问在整数 1 至 n 中有多少个数位递增的数?
输入格式: 输入的第一行包含一个整数 n。
输出格式: 输出一行包含一个整数,表示答案。
样例输入: 30
样例输出: 26
public class tset {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int count = 0;
for (int i = 1; i <= n ; i++) {
if(f(i)) {
count++;
}
}
System.err.println(count+"\n");
}
static boolean f(int i) {
if(i<10) {
return true;
}
StringBuilder sb = new StringBuilder(i+"");
for (int j = 1; j < sb.length(); j++) {
if(sb.charAt(j-1)>sb.charAt(j)) {
return false;
}
}
return true;
}
}
代码注释:
charAt: charAt() 方法用于返回指定索引处的字符。索引范围为从 0 到 length() - 1。
语法:
public char charAt(int index)
实例:
public class Test {
public static void main(String args[]) {
String s = "www.runoob.com";
char result = s.charAt(6);
System.out.println(result);
}
}
结果:
n
StringBuilder sb = new StringBuilder(); 的用法和作用:
- 用法
- 效率
用法: StringBuilder对象则代表一个字符序列可变的字符串,当一个StringBuffer被创建以后,通过StringBuffer提供的append()、insert()、reverse()、setCharAt()、setLength()等方法可以改变这个字符串对象的字符序列。一旦通过StringBuffer生成了最终想要的字符串,就可以调用它的toString()方法将其转换为一个String对象。
效率:
//第一种方法
StringBuilder sb=new StringBuilder();
sb.Append("123");
sb.Append("456");
string str=sb.ToString();
// 第二种方法
string s1=“123”;
string s2=“456”;
string str=s1+s2;
// 处理大规模的字符串的时候第二种方法效率会变低。