2020 年春节期间,有一个特殊的日期引起了大家的注意:2020 年 2 月 2 日。因为如果将这个日期按 “yyyymmdd” 的格式写成一个 8 位数是 20200202,恰好是一个回文数。我们称这样的日期是回文日期。
求下一个回文日期?
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int flag1 = 0;
int flag2 = 0;
// System.out.println(check_ab(n));
// System.out.println(check_huiwen(n));
// System.out.println(check_date(n));测试
n++;
while(true) {
if(check_date(n)) {
if(flag1==0 && check_huiwen(n)) {
System.out.println(n);
flag1 = 1;
}
if(flag2==0 && check_ab(n)) {
System.out.println(n);
flag2 = 1;
}
}
if(flag1==1 && flag2==1) {
return;
}
n++;
}
}
private static boolean check_ab(int n) {
//ABABBABA
//01234567
int a[] = new int[8];
int i = 0;
while(n > 0) {
a[i++] = n % 10;
n = n / 10;
}
if(a[0]==a[2]&&a[0]==a[5]&&a[0]==a[7] && a[1]==a[3]&&a[1]==a[4]&&a[1]==a[6]) {
return true;
}
return false;
}
private static boolean check_huiwen(int n) {
//20200202
//01234567
int a[] = new int[8];
int i = 0;
while(n > 0) {//通过这个循环,把n中的每一个数取出来
a[i++] = n%10;
n = n / 10;
}
if(a[0]==a[7] && a[1]==a[6] && a[2]==a[5] && a[3]==a[4]) {
return true;
}
return false;
}
static int[] days = {0,31,28,31,30,31,30,31,31,30,31,30,31};
private static boolean check_date(int n) {
// 检查是否是合法日期
int year=n/10000;
int month = n/100%100;
int day = n%100;
//判断月份是否合法
if (month>12 || month<1) {
return false;
}
//判断闰年
if(year%400==0 || (year%4==0 && year%100!=0)) {
days[2]=29;
}else {
days[2]=28;
}
//判断天数是否合法
if (day > days[month] || day < 1) {
return false;
}
return true;
}