日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

蓝桥回文日期

發布時間:2024/3/13 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 蓝桥回文日期 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


示例
輸入

20200202

輸出

20211202
21211212

在java中有一個類是LocalDate
LocalDate 是 Java8中新增的日期類,采用了系統的默認時區。可以方便的處理 日期對象 的 年、月、日 信息。有這個類在解決日期類問題比較方便。
下面常用的幾個常用API

1.創建日期對象獲取當前日期對象 LocalDate.now() : 返回默認時區下的、系統始終下的 當前日期 2.獲取日期對象的 年、月、日 信息 getYear() : 獲取年分信息 getMonth() : 獲取月份信息(枚舉類型) getMonthValue() : 獲取月份的數字(數值類型) getDayOfMonth() : 獲取日期信息 getDayOfWeek() : 獲取星期幾 (枚舉類型) getDayOfYear() : 獲取這一年的第幾天3.指定 日期對象的屬性 withYear(int) : 設置年 withMonth(int) : 設置月 withDayOfMonth(int) : 設置日 withDayOfYear(int) : 設置這一年的第幾天with(TemporalAdjuster) : 時間調整器,更方便的調整4.加上 或者 減去 年、月、日、周 plusYears(long) : 加幾年 plusMonths(long) : 加幾個月 plusDays(long) : 加幾天 plusWeeks(long) : 加幾個星期 minusYears(long) : 減幾年 minusMonths(long) : 減幾個月 minusDays(long) : 減幾天 minusWeeks(long) : 減幾個星期 import java.time.LocalDate; import java.util.Scanner; // 1:無需package // 2: 類名必須Main, 不可修改public class Main {public static void main(String[] args) {Scanner scanner=new Scanner(System.in);String N = scanner.next();//System.out.println(N);int year=Integer.parseInt(N.substring(0,4));int month=Integer.parseInt(N.substring(4,6));int day = Integer.parseInt(N.substring(6, 8));LocalDate date = LocalDate.now();//通過LocalDate這個類實現日期操作//修改當前年月日date=date.withYear(year);date=date.withMonth(month);date=date.withDayOfMonth(day);//2020-02-02//System.out.println(date);//分割成20200202//System.out.println(s);String a="";//第一個回文日期String b="";//第二個ABABBABA型回文日期boolean isFind=false;while(true){//一直往后找date=date.plusDays(1);String s= date.toString().replace("-","");if(isHuiWen(s)){//說明是回文數if(!isFind){a=s;isFind=true;}if(isABABBABA(s)){//說明是ABABBABA類型的b=s;break;}}}System.out.println(a);System.out.println(b);scanner.close();}private static boolean isABABBABA(String s) {//判斷ABABBABAif(s.charAt(0)==s.charAt(7)&&s.charAt(1)==s.charAt(6)&&s.charAt(2)==s.charAt(5)&&s.charAt(3)==s.charAt(4)&&s.charAt(0)==s.charAt(2)&&s.charAt(1)==s.charAt(3)){return true;}return false;}private static boolean isHuiWen(String s) {int mid=s.length()/2;int r=s.length()-1; // System.out.println("mid"+mid); // System.out.println("r"+r); // System.out.println("進來isHuiWen"+s);for(int i=0;i<mid;i++){ // System.out.println("s.charAt(i)"+s.charAt(i)); // System.out.println("s.charAt(r)"+s.charAt(r));if(s.charAt(i)!=s.charAt(r)){return false;}r--;}return true;}}

不使用LocalDate類的另一種方法
1.首先要滿足回文的形式,即ABCDDCBA,對于回文的判斷用數組會方便許多。

2.ABABBABA型:此處也可以使用數組判斷是否是回文型。

3.要滿足日期的格式。

暴力求解思路:預先存儲好各個月份的天數。需要三個判斷方法:

a.判斷是否是閏年,如果是,則將存儲的二月份的天數改為29

b.判斷是否是回文型

c.判斷是否是ABAB型

通過三重for循環來尋找下一次回文日期。巧妙運用for循環的執行順序就可以實現從當前日期往后開始尋找。先增加天數,天數滿了增加月份,月份也滿了增加年份。要注意增加月份和年份時對應地要初始化天數和月份。通過兩個Boolean值來判斷是否找到我們的目標日期,當兩個Boolean值都為true時說明都找到了我們的目標日期,可以退出循環了。

import java.util.*; class Main{static boolean IsRun(int y) {if(y%400==0||(y%4==0&&y%100!=0)) return true;return false;}static boolean ABBA(String Str){//判斷回文日期char []str=Str.toCharArray();if(str[0]==str[7]&&str[1]==str[6]&&str[2]==str[5]&&str[3]==str[4]) return true;return false;}static boolean ABAB(String Str) {//判斷ABBA型char []str=Str.toCharArray();if(str[0]==str[2]&&str[2]==str[5]&&str[5]==str[7]&&str[1]==str[3]&&str[3]==str[4]&&str[4]==str[6]&&str[0]!=str[1]) return true;return false;}public static void main(String args[]) {int monthes[]={0,31,28,31,30,31,30,31,31,30,31,30,31};Scanner in=new Scanner(System.in);String time=in.next();Integer tt=Integer.parseInt(time);int year=tt/10000;int month=tt%10000/100;int day=tt%100+1;int n;int []ans=new int[2];boolean flag1=false,flag2=false;if(IsRun(year)) monthes[2]=29;for(int i=year;i<=9999;i++,month=1,day=1) {//巧妙運用for循環的順序,可以實現從當前日期開始往后尋找for(int j=month;j<=12;j++,day=1) {for(int k=day;k<=monthes[j];k++) {n=i*10000+j*100+k;String Str=String.valueOf(n);if(ABBA(Str)&&flag1==false) {String str1=Str;flag1=true;ans[0]=n;}if(ABAB(Str)&&flag2==false) {String str2=Str;flag2=true;ans[1]=n;}if(flag1==true&&flag2==true) break;}}}System.out.println(ans[0]);System.out.println(ans[1]);} }

總結

以上是生活随笔為你收集整理的蓝桥回文日期的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。