笔试请教

大佬求教,信也科技笔试第一题感觉是一个简单的求日期是一年的第几天,但就是只过了20%,有没有大佬帮忙看看哪里出问题了qvq




public class XingYe0922 {


    public int dateArraysSum(String[] dates) {
        // write code here
        int ans = 0;
        if (dates.length == 0 || dates == null) {
            return 0;
        }

//            Arrays.sort(dates, new Comparator<String>() {
//                @Override
//                public int compare(String o1, String o2) {
//
//                    return Integer.parseInt(o1.split(" ")[2])-Integer.parseInt(o2.split(" ")[2]);
//                }
//            });
        for (int i = 0; i < dates.length; i++) {
            if (i > 0 && dates[i].equals(dates[i - 1])) continue;
            ans += helper(dates[i]);
        }
        return ans;
    }

    public int helper(String s) {
        int ans = 0;
        int m1 = 30, m2 = 31, feb = 0;
        String[] str = s.split(" ");
        String year = str[2];
        String month = str[1];
        String day = str[0];
        if (Integer.parseInt(year) % 400 == 0 || Integer.parseInt(year) % 4 == 0 && Integer.parseInt(year) % 100 != 0) {
            feb = 29;
        } else {
            feb = 28;
        }
        int m = 0;
        if (month.equals("Jan")) m = 1;
        else if (month.equals("Feb")) m = 2;
        else if (month.equals("Mar")) m = 3;
        else if (month.equals("Apr")) m = 4;
        else if (month.equals("May")) m = 5;
        else if (month.equals("Jun")) m = 6;
        else if (month.equals("Jul")) m = 7;
        else if (month.equals("Aug")) m = 8;
        else if (month.equals("Sep")) m = 9;
        else if (month.equals("Oct")) m = 10;
        else if (month.equals("Nov")) m = 11;
        else if (month.equals("Dec")) m = 12;
        int d = 0;
        int index = 0;
        String day2 = "";
        while (s.charAt(index) <= '9' && s.charAt(index) >= '0' && index < day.length()) {
            day2 += s.charAt(index);
            index++;
        }
        d = Integer.parseInt(day2);
        switch (m - 1) {
            case 11:
                ans += m2;
            case 10:
                ans += m1;
            case 9:
                ans += m2;
            case 8:
                ans += m1;
            case 7:
                ans += m1;
            case 6:
                ans += m2;
            case 5:
                ans += m1;
            case 4:
                ans += m2;
            case 3:
                ans += m1;
            case 2:
                ans += feb;
            case 1:
                ans += m1;
            case 0:
                ans += d;
                break;
        }
        return ans;
    }

}

#笔试#
全部评论
我思路也是这样 也是20% 蹲下大佬的思路
点赞 回复 分享
发布于 2022-09-23 08:10 甘肃
判断重复有问题啊,
点赞 回复 分享
发布于 2022-09-23 10:14 江西
你这个是因为switch里边的m1和m2加反了,m1和m2初始值换一下应该就没问题了。再加上去重。
点赞 回复 分享
发布于 2022-09-23 20:28 辽宁
第二题巨坑,里面的字符串是带引号的,直接给我弄麻了
点赞 回复 分享
发布于 2022-09-23 20:34 辽宁

相关推荐

10-17 12:16
同济大学 Java
7182oat:快快放弃了然后发给我,然后让我也泡他七天最后再拒掉,狠狠羞辱他一把😋
点赞 评论 收藏
分享
Hello_WordN:咱就是说,除了生命其他都是小事,希望面试官平安,希望各位平时也多注意安全
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
11-24 20:55
阿里国际 Java工程师 2.7k*16.0
程序员猪皮:没有超过3k的,不太好选。春招再看看
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务