JAVA算法,判断年月的连续性
2 回答
慕桂英546537
TA贡献1848条经验 获得超10个赞
看不明白,同年的话就是每个月都是连续的么?
不同年的呢,?
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条经验 获得超6个赞
题目描述不是完全清楚,我先按照我能理解的部分给一个朴素的算法。
输入所有年月至数组date[],扫描若干次:
第一次扫描,删除所有的2050-12,同时判断所有数据是否有序(即:对任意i应该有date[i] <= date[i+1]),若发现任意位置无序则return false;
第二次扫描,判断是否有月份出现多于2次,并删除所有重复,若发现出现多于2次的月份则return false;
第三次扫描,此时对于任一个date[i],date[i+1]应该是其紧接着的下个月。发现不符合者则return false;
三次扫描通过,return true。
添加回答
举报
0/150
提交
取消
