题目:
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
这天小明正在学数数。
他突然发现有些止整数的形状像一挫 “山”, 比如 123565321 ,145541, 它 们左右对称 (回文) 且数位上的数字先单调不减, 后单调不增。
小朋数了衣久也没有数完, 他惒让你告诉他在区间[2022,2022222022] 中有 多少个数的形状像一座 “山”。
运行限制
代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| public class shan { public static void main(String[] args) { int sum=0; for (int i=2022;i<=2022222022;i++){ String s=i+""; if (huiwen(s)&&dizeng(s)) { sum++; } } System.out.println(sum); } public static boolean huiwen(String s){ StringBuilder stringBuilder=new StringBuilder(s); stringBuilder.reverse(); return s.equals(stringBuilder.toString()); } public static boolean dizeng(String s){ int a=s.length(); for (int i=0;i<a-a/2;i++){ if (i>0&&s.charAt(i-1)>s.charAt(i)){ return false; } } return true; } }
|
思路:
暴力解法遍历每一个数,先判断是否是回文数再判断是否符合先单调不减, 后单调不增。
判断回文的时候用到了StringBuilder中的reverse方法将字符串进行反转。
由于是暴力解法所以代码运行时间较长(我运行了一分半时间左右),但本题是填空题,作答时直接输出答案即可。
答案是:3138