Java实现输出ABABBABA型回文日期

本文介绍了一段Java代码,用于生成输入合法日期之后的所有ABABBABA型日期,并特别关注于处理闰年和寻找最近的普通回文日期与ABAB型回文日期。通过递归遍历和字符串操作实现日期转换检查。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

输入一个合法的日期例如:20191212
输出在此之后的所有合法的ABABBABA型日期

输入10000101

输出第一行:10011001
第二行:10100101
第一行为最近一个普通的回文日期,第二行为ABAB型回文日期

package 回顾练习蓝桥杯;

import java.util.Scanner;

public class Main {
public static void main(String[] args) {
	Scanner sc = new Scanner(System.in);
	int date = sc.nextInt();
	System.out.println(f(date));
	System.out.println(p(date));

}

private static String p(int date) {
	int a[] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
	int a1 = date/10000;
	int a2 = date/100%100;
	int a3 = date%100;
	String s = new String();
	if (a1%4==0&&a1%100!=0||a1%400==0) {//处理一下闰年的问题
		a[2]=29;
	}
	jj:for (int i = a1; i <= 9999; i++) {
		for (int j = 1; j <= 12; j++) {
			for (int k = 1; k <= a[j]; k++) {
				String string = check(i,j,k);
				int q1 = fen(string,0);//A
				int q2 = fen(string,1);
				int q3 = fen(string,2);//A
				int q4 = fen(string,3);
				int q5 = fen(string,4);
				int q6 = fen(string,5);//A
				int q7 = fen(string,6);
				int q8 = fen(string,7);//A
				if (q1==q3&&q3==q6&&q6==q8&&q2==q4&&q4==q5&&q5==q7) {
					s = string;
					break jj;
				}
			}
		}
	}
	return s;
}

private static int fen(String string, int i) {
	return Integer.parseInt(string.substring(i,i+1));
}

private static String check(int i, int j, int k) {
	if (j<10&&k<10) {
		return ""+i+0+j+0+k;
	}else if (j<10&&k>=10) {
		return ""+i+0+j+k;
	}else if (j>=10&&k<10) {
		return ""+i+j+0+k;
	}else {
		return ""+i+j+k;

	}
}

private static String f(int date) {
		int a[] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
		int a1 = date/10000;
		int a2 = date/100%100;
		int a3 = date%100;
		String s = new String();
		if (a1%4==0&&a1%100!=0||a1%400==0) {//处理一下闰年的问题
			a[2]=29;
		}
		jj:for (int i = a1; i <= 9999; i++) {
			for (int j = 1; j <= 12; j++) {
				for (int k = 1; k <= a[j]; k++) {
					String string = check(i,j,k);
					int q1 = fen(string,0);
					int q2 = fen(string,1);
					int q3 = fen(string,2);
					int q4 = fen(string,3);
					int q5 = fen(string,4);
					int q6 = fen(string,5);
					int q7 = fen(string,6);
					int q8 = fen(string,7);
					if (q4==q5&&q3==q6&q2==q7&&q1==q8) {
						s = string;
						break jj;
					}
				}
			}
		}
		return s;
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值