为了账号安全,请及时绑定邮箱和手机立即绑定

JAVA算法,判断年月的连续性?

JAVA算法,判断年月的连续性?

HUX布斯 2019-02-14 17:02:06
JAVA算法,判断年月的连续性
查看完整描述

2 回答

?
慕桂英546537

TA贡献1848条经验 获得超10个赞

看不明白,同年的话就是每个月都是连续的么?

 不同年的呢,?

2050-12特殊年月是何意?

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657public 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(04));            System.out.println(years[i].substring(67));            if (years[i].substring(04).equals(years[i + 1].substring(04))                                && Integer.valueOf(years[i + 1].substring(67))                            - Integer.valueOf(years[i].substring(67)) > 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(04).equals(years[1].substring(04))){            if(Integer.valueOf(years[1].substring(67))-Integer.valueOf(years[0].substring(67))==1)            return true;            }else if(Integer.valueOf(years[1].substring(04))-Integer.valueOf(years[0].substring(04))==1&&                Integer.valueOf(years[0].substring(67))==12&&Integer.valueOf(years[1].substring(67))==1){            return true;        }        return false;             }



查看完整回答
反对 回复 2019-03-02
?
慕码人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。



查看完整回答
反对 回复 2019-03-02
  • 2 回答
  • 0 关注
  • 1922 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信