需求:
小明特别喜欢顺子。顺子指的就是连续的三个数字:123、456 等。顺子日期指的就是在日期的 yyyymmdd 表示法中,存在任意连续的三位数是一个顺子的日期。例如 20220123 就是一个顺子日期,因为它出现了一个顺子:123; 而 20221023 则不是一个顺子日期,它一个顺子也没有。小明想知道在整个 2022 年份中,一共有多少个顺子日期?
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int count = 0; //记录顺子日期个数
int month = 1; //初始化月份
int day = 1; // 初始化日期
int[] arr = {0,31,28,31,30,31,30,31,31,30,31,30,31}; //定义一个数组记录每个月的天数
while(true){
//根据题目要求小于10的数字前加 0
String d = "" + day;
String m = "" + month;
if(day < 10){
d = "0" + day;
}
if(month < 10){
m = "0" + month;
}
//判断是否包含顺子数 012 和 123,在合法的日期范围内只有这两顺子数
String str = m + d;
if(str.contains("012") || str.contains("123")){
count++;
}
day++;
if(day > arr[month]){
day = 1;
month++;
}
//打印输出
if(month == 12 && day == 31){
System.out.println(count+1);//因为最后的12 31中有一个顺子数所以要加 +1
return;
}
}
}
}
执行结果