回文日期
输入描述
输入包含一个八位整数 NN,表示日期。
对于所有评测用例,10000101 \leq N \leq 8999123110000101≤N≤89991231,保证 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; } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人