JAVA算法,判斷年月的連續(xù)性
2 回答

慕桂英546537
TA貢獻1848條經(jīng)驗 獲得超10個贊
看不明白,同年的話就是每個月都是連續(xù)的么?
不同年的呢,?
2050-12特殊年月是何意?
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 | public static boolean findThree(String[] years) { boolean flag = false ; all: for ( int i = 0 ; i < years.length; i++) { int num = 0 ; for ( int j = 0 ; j < years.length; j++) { if (years[i].equals(years[j])) num++; if (num == 3 ) flag = true ; break all; } } return flag; } public static boolean tabCheck(String[] years) { //System.out.println(years[i].substring(0, 4)); boolean flag = false ; for ( int i = 0 ; i < years.length - 1 ; i++) { System.out.println(years[i].substring( 0 , 4 )); System.out.println(years[i].substring( 6 , 7 )); if (years[i].substring( 0 , 4 ).equals(years[i + 1 ].substring( 0 , 4 )) && Integer.valueOf(years[i + 1 ].substring( 6 , 7 )) - Integer.valueOf(years[i].substring( 6 , 7 )) > 1 ) flag = true ; break ; } return flag; } public static void main(String[] args) { String[] years={ "2012-01" , "2012-04" , "2012-05" , "2012-06" , "2012-07" , "2050-12" }; if (tabCheck(years)||findThree(years)) System.out.println( "不合格" ); else System.out.println( "合格" ); } ////////////////////////////////////////////////////////////////////// //如果只有兩組年月的話,只有兩種情況了,一種是同年隔一月, //一種是隔年首尾相接 public boolean IsNext(String[] years){ Arrays.sort(years); if (years[ 0 ].substring( 0 , 4 ).equals(years[ 1 ].substring( 0 , 4 ))){ if (Integer.valueOf(years[ 1 ].substring( 6 , 7 ))-Integer.valueOf(years[ 0 ].substring( 6 , 7 ))== 1 ) return true ; } else if (Integer.valueOf(years[ 1 ].substring( 0 , 4 ))-Integer.valueOf(years[ 0 ].substring( 0 , 4 ))== 1 && Integer.valueOf(years[ 0 ].substring( 6 , 7 ))== 12 &&Integer.valueOf(years[ 1 ].substring( 6 , 7 ))== 1 ){ return true ; } return false ; } |

慕碼人8056858
TA貢獻1803條經(jīng)驗 獲得超6個贊
題目描述不是完全清楚,我先按照我能理解的部分給一個樸素的算法。
輸入所有年月至數(shù)組date[],掃描若干次:
第一次掃描,刪除所有的2050-12,同時判斷所有數(shù)據(jù)是否有序(即:對任意i應(yīng)該有date[i] <= date[i+1]),若發(fā)現(xiàn)任意位置無序則return false;
第二次掃描,判斷是否有月份出現(xiàn)多于2次,并刪除所有重復(fù),若發(fā)現(xiàn)出現(xiàn)多于2次的月份則return false;
第三次掃描,此時對于任一個date[i],date[i+1]應(yīng)該是其緊接著的下個月。發(fā)現(xiàn)不符合者則return false;
三次掃描通過,return true。
添加回答
舉報
0/150
提交
取消