荣耀8.20笔试

第一题:思路:简单模拟即可
public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        in.nextLine();
        String str = in.nextLine();
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < n; i += 9) {
            StringBuilder temp = new StringBuilder(str.substring(i, i + 9));
            if (str.charAt(i) == 0) {
                sb.append(temp);
            } else {
                sb.append(temp.reverse());
            }
            sb.append(" ");
        }
    }
第二题:思路:正则匹配+优先级队列排序
public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        sc.nextLine();
        TreeSet<Pair> ts = new TreeSet<>((a, b) -> {
            if (a.timestamp.equals(b.timestamp)) {
                if (a.str.length() == b.str.length()) {
                    return a.str.compareTo(b.str);
                } else {
                    return a.str.length() - b.str.length();
                }
            } else {
                return a.timestamp.compareTo(b.timestamp);
            }
        });
        for (int i = 0; i < n; i++) {
            String str = sc.nextLine();
            String regex = "[0-9]{4}[-][0-9]{2}[-][0-9]{2}[T][0-9]{2}[:][0-9]{2}[:][0-9]{2}";
            Pattern p = Pattern.compile(regex);
            Matcher m = p.matcher(str);
            String timestamp = null;
            if (m.find()) {
                timestamp = m.group();
            }
            ts.add(new Pair(str, timestamp));
        }
        for (Pair p : ts) {
            System.out.println(p.str);
        }
    }

    static class Pair {
        String str;
        String timestamp;
        Pair(String str, String timestamp) {
            this.str = str;
            this.timestamp = timestamp;
        } @Override public boolean equals(Object o) {
            if (this == o) return true;
            if (o == null || getClass() != o.getClass()) return false;
            Pair pair = (Pair) o;
            return pair.str.equals(str) &&
                    pair.timestamp.equals(timestamp);
        } @Override public int hashCode() {
            return Objects.hash(str, timestamp);
        }
    }
第三题:暴力回溯只过了一半,思路:对于每一个数,遍历队伍的每一行看能不能放,最后新建一行并且加入。
   static List<List<Integer>> res = new ArrayList<>();
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String s = in.nextLine();
        String[] strs = s.split(", ");
        int[] nums = new int[strs.length];
        for (int i = 0; i < strs.length; i++) {
            nums[i] = Integer.parseInt(strs[i]);
        }
        Arrays.sort(nums);

        List<List<Integer>> rows = new ArrayList<>();
        backTrack(rows, nums, 0);
        System.out.println("lenth:" + nums.length / res.size());
        for (List<Integer> r : res) {
            System.out.println(r);
        }
    }

    static void backTrack(List<List<Integer>> rows, int[] nums, int index) {
        if (index == nums.length) {
            if (res.size() == 0 ||( rows.size() < res.size())) {
                res = new ArrayList<>();
                if (check(rows)) {
                    for (List<Integer> row : rows) {
                        res.add(new ArrayList<>(row));
                    }
                }
            }
            return;
        }
        int num = nums[index];
        for (int i = 0; i < rows.size(); i++) {
            List<Integer> row = rows.get(i);
            if (row.size() > 1) {
                int last = row.get(row.size() - 1);
                int preLast = row.get(row.size() - 2);
                if (num - last != last - preLast) {
                    continue;
                }
            }
            if (row.get(0) == num) continue;
            row.add(num);
            backTrack(rows, nums, index + 1);
            row.remove(row.size() - 1);
        }
        rows.add(new ArrayList<>());
        rows.get(rows.size() - 1).add(num);
        backTrack(rows, nums, index + 1);
        rows.remove(rows.size() - 1);
    }

    static boolean check(List<List<Integer>> rows) {
        int n = rows.get(0).size();
        for (int i = 1; i < rows.size(); i++) {
            if (rows.get(i).size() != n) return false;
        }
        return true;
    } 



#荣耀2023秋招笔试交流讨论#
全部评论
笔试已经开始了?
点赞 回复 分享
发布于 2022-08-21 00:48 四川
达到100就给面试吗?
点赞 回复 分享
发布于 2022-08-21 08:21 安徽
第一题为什么是 i~i+9;这样不是把第一位的标识符也截进去了吗
点赞 回复 分享
发布于 2022-08-21 08:48 浙江
第三题回溯的思路很牛
点赞 回复 分享
发布于 2022-08-21 15:42 江苏
占楼。各位对荣耀有兴趣的宝子看过来啦,我可以内推。 荣耀honor招聘官网https://www.hihonor.com/cn/career/ 内推码:yuhvad
点赞 回复 分享
发布于 2022-08-22 10:56 广东
请问能发一下第三题题目吗?
点赞 回复 分享
发布于 2022-09-06 15:55 陕西
第三题为什么我运行结果不太对,输入2 3 3 4返回(2 3 4)(3)
点赞 回复 分享
发布于 2022-09-08 21:01 北京

相关推荐

一个菜鸡罢了:哥们,感觉你的简历还是有点问题的,我提几点建议,看看能不能提供一点帮助 1. ”新余学院“别加粗,课程不清楚是否有必要写,感觉版面不如拿来写一下做过的事情,教育经历是你的弱势就尽量少写 2. “干部及社团经历”和“自我评价”删掉 3. 论文后面的“录用”和“小修”啥的都删掉,默认全录用,问了再说,反正小修毕业前肯定能发出来 4. 工作经验和研究成果没有体现你的个人贡献,着重包装一下个人贡献
点赞 评论 收藏
分享
10-13 17:47
门头沟学院 Java
wulala.god:图一那个善我面过,老板网上找的题库面的
点赞 评论 收藏
分享
评论
5
24
分享
牛客网
牛客企业服务