问题描述
这天小明正在学数数。他突然发现有些正整数的形状像一座“山”,比如 123565321、145541,它们左右对称(回文)且数位上的数字先单调不减,后单调不增。小明数了很久也没有数完,他想让你告诉他在区间 [2022, 2022222022] 中有多少个数的形状像一座“山”。
我的思路:
啊,就暴力跑写两个方法一个判断是否是回文数,一个判断是否是先单调不减,后单调不增。一两分钟分钟就跑出来了答案3138。
代码:
package LanQiao;
/**
* @copyright (C), 2019-2022, Kkoo
* @author: Kkoo
* @date: 2022/4/11 0011 11:05
* @fileName: 山
*/
public class 山 {
public static void main(String[] args) {
//记录满足条件的个数
int count = 0;
for (int i = 2022; i <= 20222022; i++) {
//int -> String
String s = i + "";
//String -> char[]
char[] t = s.toCharArray();
if (pdhws(t)) {
if (pdsw(t)) {
System.out.println(t);
count++;
}
}
}
System.out.println(count);
}
/**
* 判断是否是回文数
*
* @param t
* @return
*/
public static boolean pdhws(char[] t) {
boolean flag = true;
int mid = t.length / 2;
for (int j = 0; j < mid; j++) {
if (t[j] == t[t.length - j - 1]) {
flag = true;
} else {
flag = false;
return flag;
}
}
return flag;
}
/**
* 是否是先单调不减,后单调不增
*
* @param t
* @return
*/
public static boolean pdsw(char[] t) {
boolean flag = true;
int mid = t.length / 2;
for (int j = 0; j < mid; j++) {
if (t[j] <= t[j + 1]) {
flag = true;
} else {
flag = false;
return flag;
}
}
return flag;
}
}
作者:Kkoo
链接:https://www.pwwwp.com/
著作权归作者所有。商业转载请联系作者进行授权,非商业转载请注明出处。