回文日期

输入描述

输入包含一个八位整数 NN,表示日期。

对于所有评测用例,10000101 \leq N \leq 8999123110000101N89991231,保证 NN 是一个合法日期的 8 位数表示。

输出描述

输出两行,每行 1 个八位数。第一行表示下一个回文日期,第二行表示下一个 ABABBABA 型的回文日期。

import java.util.Calendar;
import java.util.Scanner;
import java.text.SimpleDateFormat;

public class Main {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        String str1=null;
        String str2=null;
        int N=scanner.nextInt()/10000;        //保留前四位 年份
        for (int i = N+1; i <= 8999; i++) {
            StringBuilder str    =new StringBuilder(i+"");//数字转化为字符串 StringBuilder对象 和String 比能多次修改
            str.reverse();//将前4位反转得到回文数
            String data=i+""+str;
            if(str1 != null && str2 != null)break;//用str1,2来保存输出的结果
            if (isData(data)&&!isABAB(data)) {        //判断是否合理且是否为abab型     +!防止获取的str、str1一样
                if (str1==null) {
                    str1=data;
                }
            }
            if (isData(data)&&isABAB(data)) {
                if (str2==null) {
                    str2=data;
                }
            }        
        }//先转化为字符串再输出好回文数字
        System.out.println(str1);
        System.out.println(str2);
    }
    private static boolean isABAB(String data) {
        // TODO 自动生成的方法存根
        char[] arr=data.toCharArray();
        if (arr[0]!=arr[1]&&arr[0]==arr[2]&&arr[1]==arr[3]) {
            return true;
        }
        return false;
    }
    private static boolean isData(String data) {
        // TODO 自动生成的方法存根d
        boolean res=true;
        SimpleDateFormat format =new SimpleDateFormat("yyyyMMdd");     //格式化时间成yyyyMMdd型
        try {
            format.setLenient(false);        //日期格式不合格 需要抛出异常 停止SimpleDateFormat的自动计时
            format.parse(data);                //将字符串转化为日期
        } catch (Exception e) {
            // TODO: handle exception
            res=false;
        }    
        return res;
    }
}

 

posted @ 2022-12-27 16:56  抹茶泡芙  阅读(42)  评论(0)    收藏  举报