725用友Java开发笔试

选择太难了,而且每部分都要提交了才能看下一部分的题,搞得我好紧张,又怕前面的题选的太草率丢分多,又怕时间都浪费在前边了编程题没时间做。SQL的题以前只背了八股每怎么练过,就直接放弃了,结果两道编程题做完还有8分多钟干瞪眼。呜呜能不能全部做完提交了还有时间的话再给点时间反刍前边的题呀,太心疼那道SQL了。
编程题1:大概是有一个九键手机键盘,每个键代表三个或四个字符,如果想按某个键的第一个字符就要按这个键一下,如果想按某个键的第二个字符就要按这个键两下以此类推,问给定一个字符串,统计按下某个键的次数,以列表数组形式输出。
    public int[][] count(String str) {
        // write code here
        if (str == null || str.length() == 0) {
            return new int[0][0];
        }
        int n = str.length();
        HashMap<Integer, Integer> map = new HashMap<>();
        char c;
        for (int i = 0; i < n; i++) {
            c = str.charAt(i);
            if (c == '@' || c == '!' || c == '.' || c == '/') {
                if (c == '@') {
                    map.put(1, map.getOrDefault(1, 0) + 1);
                } else if (c == '!') {
                    map.put(1, map.getOrDefault(1, 0) + 2);
                } else if (c == '.') {
                    map.put(1, map.getOrDefault(1, 0) + 3);
                } else if (c == '/') {
                    map.put(1, map.getOrDefault(1, 0) + 4);
                }
            }
            if (c == 'a' || c == 'b' || c == 'c') {
                if (c == 'a') {
                    map.put(2, map.getOrDefault(2, 0) + 1);
                } else if (c == 'b') {
                    map.put(2, map.getOrDefault(2, 0) + 2);
                } else if (c == 'c') {
                    map.put(2, map.getOrDefault(2, 0) + 3);
                }
            }
            if (c == 'd' || c == 'e' || c == 'f') {
                if (c == 'd') {
                    map.put(3, map.getOrDefault(3, 0) + 1);
                } else if (c == 'e') {
                    map.put(3, map.getOrDefault(3, 0) + 2);
                } else if (c == 'f') {
                    map.put(3, map.getOrDefault(3, 0) + 3);
                }
            }
            if (c == 'g' || c == 'h' || c == 'i') {
                if (c == 'g') {
                    map.put(4, map.getOrDefault(4, 0) + 1);
                } else if (c == 'h') {
                    map.put(4, map.getOrDefault(4, 0) + 2);
                } else if (c == 'i') {
                    map.put(4, map.getOrDefault(4, 0) + 3);
                }
            }
            if (c == 'j' || c == 'k' || c == 'l') {
                if (c == 'j') {
                    map.put(5, map.getOrDefault(5, 0) + 1);
                } else if (c == 'k') {
                    map.put(5, map.getOrDefault(5, 0) + 2);
                } else if (c == 'l') {
                    map.put(5, map.getOrDefault(5, 0) + 3);
                }
            }
            if (c == 'm' || c == 'n' || c == 'o') {
                if (c == 'm') {
                    map.put(6, map.getOrDefault(6, 0) + 1);
                } else if (c == 'n') {
                    map.put(6, map.getOrDefault(6, 0) + 2);
                } else if (c == 'o') {
                    map.put(6, map.getOrDefault(6, 0) + 3);
                }
            }
            if (c == 'p' || c == 'q' || c == 'r' || c == 's') {
                if (c == 'p') {
                    map.put(7, map.getOrDefault(7, 0) + 1);
                } else if (c == 'q') {
                    map.put(7, map.getOrDefault(7, 0) + 2);
                } else if (c == 'r') {
                    map.put(7, map.getOrDefault(7, 0) + 3);
                } else if (c == 's') {
                    map.put(7, map.getOrDefault(7, 0) + 4);
                }
            }
            if (c == 't' || c == 'u' || c == 'v') {
                if (c == 't') {
                    map.put(8, map.getOrDefault(8, 0) + 1);
                } else if (c == 'u') {
                    map.put(8, map.getOrDefault(8, 0) + 2);
                } else if (c == 'v') {
                    map.put(8, map.getOrDefault(8, 0) + 3);
                }
            }
            if (c == 'w' || c == 'x' || c == 'y' || c == 'z') {
                if (c == 'w') {
                    map.put(9, map.getOrDefault(9, 0) + 1);
                } else if (c == 'x') {
                    map.put(9, map.getOrDefault(9, 0) + 2);
                } else if (c == 'y') {
                    map.put(9, map.getOrDefault(9, 0) + 3);
                } else if (c == 'z') {
                    map.put(9, map.getOrDefault(9, 0) + 4);
                }
            }
        }
        int[][] ans = new int[map.keySet().size()][2];
        int idx = 0;
        for (int i = 0; i < 9; i++) {
            if (map.get(i + 1) != null) {
                ans[idx][0] = i + 1;
                ans[idx][1] = map.get(i + 1);
                idx++;
            }
        }
        return ans;
    }
编程题第二题:给一个01组成的数组,和一个整数n,最多有n次将任意数反转的机会,问能得到的最长连续相同字符的子数组长度是多少,刚开始想用动规,但是有点解不出来,最后用了双指针。
    public int getMaxConsecutiveOnes(int[] arr, int n) {
        // write code here
        int left = 0;
        int count = 0;
        int max = 0;
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] == 1) {
                continue;
            } else if (arr[i] == 0 && count < n) {
                count++;
            } else {
                max = Math.max(max, (i - left));
                while (arr[left] != 0) {
                    left++;
                }
                left++;
            }
        }
        max = Math.max(max, arr.length - left);
        return max;
    }



#用友#
全部评论
你们的笔试结果出来了没
1 回复 分享
发布于 2022-07-27 18:51
大佬,笔试编程题是核心代码还是acm模式
1 回复 分享
发布于 2022-08-01 11:48
最后一题好像是滑动窗口
点赞 回复 分享
发布于 2022-07-26 11:52
约面试了 但是告诉我笔试太差 高潜批次要求达不到 给我搞成提前批内推了
点赞 回复 分享
发布于 2022-07-27 21:41
这个第二题是求最长的连续的1的个数吧
点赞 回复 分享
发布于 2022-07-28 19:58

相关推荐

11-02 09:49
已编辑
货拉拉_测试(实习员工)
热爱生活的仰泳鲈鱼求你们别卷了:没事楼主,有反转查看图片
点赞 评论 收藏
分享
Yushuu:你的确很厉害,但是有一个小问题:谁问你了?我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了😆
点赞 评论 收藏
分享
3 20 评论
分享
牛客网
牛客企业服务