簡(jiǎn)介:日期題結(jié)合字符串的處理
2020 年春節(jié)期間,有一個(gè)特殊的日期引起了大家的注意:2020 年 2 月 2 日。因?yàn)槿绻麑⑦@個(gè)日期按 “yyyymmdd” 的格式寫成一個(gè) 8 位數(shù)是 20200202,恰好是一個(gè)回文數(shù)。我們稱這樣的日期是回文日期。
有人表示 20200202 是 “千年一遇” 的特殊日子。對(duì)此小明很不認(rèn)同,因?yàn)椴坏?2 年之后就是下一個(gè)回文日期:20211202 即 2021 年 12 月 2 日。
也有人表示 20200202 并不僅僅是一個(gè)回文日期,還是一個(gè) ABABBABA 型的回文日期。對(duì)此小明也不認(rèn)同,因?yàn)榇蠹s 100 年后就能遇到下一個(gè) ABABBABA 型的回文日期:21211212 即 2121 年 12 月 12 日。算不上 “千年一遇”,頂多算 “千年兩遇”。
給定一個(gè) 8 位數(shù)的日期,請(qǐng)你計(jì)算該日期之后下一個(gè)回文日期和下一個(gè) ABABBABA 型的回文日期各是哪一天。
輸入描述輸入包含一個(gè)八位整數(shù) NN,表示日期。
對(duì)于所有評(píng)測(cè)用例,10000101≤N≤8999123110000101≤N≤89991231,保證 NN 是一個(gè)合法日期的 8 位數(shù)表示。
輸出描述輸出兩行,每行 1 個(gè)八位數(shù)。第一行表示下一個(gè)回文日期,第二行表示下一個(gè) ABABBABA 型的回文日期
輸入
20200202
輸出
20211202
21211212
這道題是隨日期的變化,找出符合題意的回文數(shù)(字符串)
首先:日期的變化,就可以用之前我專欄里面寫到的java日期模擬器
其次,日期變化解決后,解決的是字符串問(wèn)題
字符串問(wèn)題的判斷就在check函數(shù)中去寫語(yǔ)句(取字串,字符串反轉(zhuǎn),字符串相等的判斷)
二、代碼 1.日期模擬部分代碼如下(示例):
//月份表 ?? ??? ?static int w[]=new int[]{0,31,28,31,30,31,30,31,31,30,31,30,31}; ?? ??? ?static int y,m,d; ?? ??? ?static String s11; ?? ?public static void main(String[] args) { ?? ??? ?// TODO Auto-generated method stub ?? ??? ?String s1 = null,s2=null; ?? ??? ?boolean flag=true,flagg=true; ?? ??? ?Scanner scanner=new Scanner(System.in); ?? ??? ?String string=scanner.next(); ?? ??? ?y=Integer.parseInt(string.substring(0,4)); ?? ??? ?m=Integer.parseInt(string.substring(4,6)); ?? ??? ?d=Integer.parseInt(string.substring(6)); ?? ??? ?String mmmString=null,dddString=null; ?? ??? ?while(flag||flagg) { ?? ??? ??? ?if(y%4==0&&y%100!=0||y%100==0&&y%400==0) {//判斷閏年 ?? ??? ??? ??? ?w[2]=29; ?? ??? ??? ?}else { ?? ??? ??? ??? ?w[2]=28; ?? ??? ??? ?} ?? ??? ??? ?d++; ?? ??? ??? ?if(d>w[m]) { ?? ??? ??? ??? ?m++; ?? ??? ??? ??? ?d=1; ?? ??? ??? ?} ?? ??? ??? ?if(m>12) { ?? ??? ??? ??? ?y++; ?? ??? ??? ??? ?m=1; ?? ??? ??? ?} ?? ??? ??? ?if(m>=10) { ?? ??? ??? ??? ? mmmString=Integer.toString(m); ?? ??? ??? ?}else { ?? ??? ??? ??? ? mmmString="0"+Integer.toString(m); ?? ??? ??? ?} ?? ??? ??? ?if(d>=10) { ?? ??? ??? ??? ? dddString=Integer.toString(d); ?? ??? ??? ?}else { ?? ??? ??? ??? ? dddString="0"+Integer.toString(d); ?? ??? ??? ?} ?? ??? ??? ?s11=Integer.toString(y)+mmmString+dddString;; ?? ??? ??? ?if(flag) { ?? ??? ??? ?if(check()) { ?? ??? ??? ??? ?s1=Integer.toString(y)+mmmString+dddString; ?? ??? ??? ??? ?flag=false; ?? ??? ??? ?} ?? ??? ??? ?} ?? ??? ??? ?if(flagg) { ?? ??? ??? ??? ?if(check2()) { ?? ??? ??? ??? ??? ?s2=Integer.toString(y)+mmmString+dddString; ?? ??? ??? ??? ??? ?flagg=false; ?? ??? ??? ??? ?} ?? ??? ?} ?? ??? ?} ?? ??? ?System.out.println(s1); ?? ??? ?System.out.println(s2); ?? ?}2.check函數(shù)部分
代碼如下(示例):
static boolean check() { ?? ??? ?String left=s11.substring(0,4),rigt=s11.substring(4); ?? ??? ?StringBuilder sb=new StringBuilder(rigt); ?? ??? ?rigt=sb.reverse().toString(); ?? ??? ?if(left.equals(rigt)) { ?? ??? ??? ?return true; ?? ??? ?}else { ?? ??? ?return false; ?? ??? ?} ?? ?} ?? ?static boolean check2() { ?? ??? ?if(check()) { ?? ??? ??? ?String left1=s11.substring(0,2), left2=s11.substring(2,4),rigt1=s11.substring(4,6), rigt2=s11.substring(6); ?? ??? ??? ?if(left1.equals(left2)&&rigt1.equals(rigt2)) { ?? ??? ??? ??? ?return true; ?? ??? ??? ?}else { ?? ??? ??? ??? ?return false; ?? ??? ??? ?} ?? ??? ??? ? ?? ??? ?}else { ?? ??? ??? ?return false; ?? ??? ?} ?? ?}
=========================================================================
由感而寫的,謝謝!
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧