找出在[2022,2022222022]中数型像“山”的数字

比如:14541

它左右对称(回文),且数位上先单调不减,后单调不增

 1 public class test {
 2     /*思路:
 3      * 做循环
 4      *判断
 5      *     1-是否回文
 6      *     2-是否中间是最大
 7      */
 8     static boolean isCirChar(int n) {//传入需要判断的数n,和当前判断的位置i
 9         StringBuffer stringBuffer = new StringBuffer(n+"");
10         if (stringBuffer.toString().equals(stringBuffer.reverse().toString())) {
11             return true;
12         }else {
13             return false;
14         }
15     }
16     
17     static boolean isMidMax(int n) {/*在Boolean的方法中需要有直接返回的值,不能将true || false 都写在for循环内*/
18         String string = n+"";
19         int midR = string.length()%2==0?string.length()/2:string.length()/2+1;//中间往右一个,保证单数长度取到最中间的数
20             for (int i = 1; i < midR; i++) {
21                 if(string.charAt(i) < string.charAt(i-1)) {
22                     return false;
23                 }
24             }    
25             return true;
26         }
27     
28     
29     public static void main(String[] args) {
30         int count = 0;
31         for (int n = 2022; n < 2022222022; n++) {
32             if (isCirChar(n) && isMidMax(n)) {
33                 count++;35             }
36         }    
37         System.out.println(count);
38     }
39 }

结果是:3138

 

学习到的新方法,判断数字是否回文思路

  1. 输入一个int数字
  2. 将数字用StringBuffer stringbuffer = new StringBuffer(num+"");  转换为StringBuffer类型
  3. 判断stringbuffer和stringbuffer.reverse是否相同(!!!!此处不是数字类型,应该用equals()判断)
posted @ 2023-04-06 21:33  帆のBlog  阅读(37)  评论(0)    收藏  举报