AcWing 2867. 回文日期_(Java)
原题链接
简单
作者:
差一点睡死了
,
2021-02-10 16:30:19
,
所有人可见
,
阅读 467
回文日期_(Java)
import java.util.Scanner;
public class Main {
static int[] days = new int[]{0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int date = sc.nextInt();
int year, month, day;
int cnt = 0, flag = 0;
for(int i=date+1;i<99999999;i++) {
year = i / 10000; //取出年、月、日
month = i % 10000 / 100;
day = i % 100;
if(!check_valid(year,month,day)) {
continue;
}
if(cnt==0&&check_next(String.valueOf(i))) {
cnt=i;
}
if(flag==0&&check_ABABBABA(String.valueOf(i))) {
flag=i;
}
if(cnt!=0&&flag!=0) {
break;
}
}
System.out.println(cnt);
System.out.println(flag);
}
static boolean check_valid(int year1,int month1,int day1) {
if(month1==0||month1>12) {
return false;
}
if(month1!=2) {
if(day1>days[month1]) {
return false;
}
}else {
//判断闰年
if(year1%4==0&&year1%100!=0 || year1%400==0) {
if(day1>29) return false;
}else {
if(day1>28) return false;
}
}
return true;
}
static boolean check_next(String date) {
for (int i = 0,j=date.length()-1; i <j; i++,j--) {
if(date.charAt(i)!=date.charAt(j)) {
return false;
}
}
return true;
}
static boolean check_ABABBABA(String date) {
char[] n = date.toCharArray();
if(n[0] == n[2] && n[2] == n[5] && n[5] == n[7]
&& n[1] == n[3] && n[3] == n[4] && n[4] == n[6]
&& n[0] != n[1]) {
return true;
}
return false;
}
}