山
找出在[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
学习到的新方法,判断数字是否回文思路:
- 输入一个int数字
- 将数字用StringBuffer stringbuffer = new StringBuffer(num+""); 转换为StringBuffer类型
- 判断stringbuffer和stringbuffer.reverse是否相同(!!!!此处不是数字类型,应该用equals()判断)
浙公网安备 33010602011771号