返回题解分享
讨论 / 题解分享/ 帖子详情

回文日期(编程题) - 题解

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {		
		Scanner scan = new Scanner(System.in);
		String a = scan.next();
		scan.close();
		String r;
		boolean flag=true; 
		String i=a;
		while(true) {
			i = dateUp(i);
			r = new StringBuilder(i).reverse().toString();
			if(r.equals(i)) {
				if(flag) {
					System.out.println(i);
					flag = false;
				}
				String ab = i.substring(0, 2);
				String ba = i.substring(2, 4);
				if(ab.equals(ba)) {
					System.out.println(i);
					break;
				}
			}
		}
	}

	public static int[] days = new int[] {0,31,28,31,30,31,30,31,31,30,31,30,31};	
      //每次日期加一天
	public static String dateUp(String t) {
		int i = Integer.parseInt(t);
        //天份
		int d = i%100;
		i=i/100;
              //月份
		int m = i%100;
		i=i/100;
              //年份
		int y = i;
		if((y%400==0)||(y%4==0&&y%100!=0)) {
			//闰
			days[2] = 29;
		}else {
			days[2] = 28;
		}
		if(d+1>days[m]) {
			if(m+1>12) {
				//年份上加1
				y++;
				//月份归0
				m=0;
			}else {
//月份++
				m++;
				//日归0
				d=0;
			}
		}else {
			d++;
		}
		return ""+(y*10000+m*100+d);
	}

}
0 回复 0 转发 0 喜欢 2 阅读
回复 (0)
默认 最新
暂无回复,快来抢沙发!