首页 > 2021年春招笔试凉经
头像
白羊deepinsea
编辑于 2021-03-20 22:28
+ 关注

2021年春招笔试凉经

两个小时,就两道算法题
第一题求缘分值直接暴力装箱拆箱刚过去了,第二题要用AC自动机,没写过就放弃了
下面是我第一题的解题思路,各位大佬不喜轻喷,算法小白一个:
public class ExamXieCheng {

    public static void main(String[] args) {
//        String name1 = "Peng Xiangwen";
//        String name2 = "Pen Mengzhu";
        Scanner sc = new Scanner(System.in);
        while (sc.hasNextLine()) {
            String name1 = sc.nextLine();
            String name2 = sc.nextLine();
            test(name1, name2);
        }
    }

    public static void test(String name1, String name2) {
        String[] s1 = name1.split(" ");
        String[] s2 = name2.split(" ");
        for (int i = 0; i < s1.length; i++) {
//            System.out.println(s1[i]);
        }
        for (int i = 0; i < s2.length; i++) {
//            System.out.println(s2[i]);
        }
        // 比较并取出没有的字符串
        StringBuilder sub1 = new StringBuilder();
        //1、name1-姓
        String[] strings10 = s2[0].split("");
        int count1 = 0;
        for (String s : strings10) {
            if (!s1[0].contains(s)) {
                sub1.append(s + ",");
            }
        }
        String a = sub1.substring(0, sub1.length()).toString();
//        System.out.println("name1的姓中没有的字母是:" + a);
        // 计数器
        char[] charArr1 = a.toCharArray();
        for (int i = 0; i < charArr1.length; i++) {
            count1 += (int) charArr1[i];
//            System.out.println(count1);
        }
//        System.out.println("数组1的ASCII值和为:"+count1);

        //2、name2-姓
        String[] strings11 = s1[0].split("");
        int count2 = 0;
        for (String s : strings11) {
            if (!s2[0].contains(s)) {
                // 将数据添加到sub1中
                sub1.append(s);
            }
        }
        String b = sub1.substring(0, sub1.length()).toString();
//        System.out.println("name2的姓中没有的字母是:" + b);
        // 计数器
        char[] charArr2 = b.toCharArray();
        for (int i = 0; i < charArr2.length; i++) {
            count2 += (int) charArr2[i];
//            System.out.println(count2);
        }
//        System.out.println("数组2的ASCII值和为:"+count2);

        // 同样的s2也进行比较
        StringBuilder sub2 = new StringBuilder();
        // 3、name1-名
        String[] strings20 = s2[1].split("");
        int count3 = 0;
        for (String s : strings20) {
            if (!s1[1].contains(s)) {
                sub2.append(s);
            }
        }
        String c = sub2.substring(0, sub2.length()).toString();
//        System.out.println("name1的名中没有的字母是:" + c);
        // 计数器
        char[] charArr3 = c.toCharArray();
        for (int i = 0; i < charArr3.length; i++) {
            count3 += (int) charArr3[i];
        }
//        System.out.println("数组3的ASCII值和为:"+count3);

        // 4、name2-名
        String[] strings2 = s1[1].split("");
        int count4 = 0;
        for (String s : strings2) {
            if (!s2[1].contains(s)) {
                sub2.append(s);
            }
        }
        String d = sub2.substring(0, sub2.length()).toString();
//        System.out.println("name2的名中没有的字母是:" + d);
        // 计数器
        char[] charArr4 = d.toCharArray();
        for (int i = 0; i < charArr4.length; i++) {
            count4 += (int) charArr4[i];
        }
//        System.out.println("数组4的ASCII值和为:"+count4);
        System.out.println((count2 + count4));
    }
}
第二题有哪位大佬会吗?

全部评论

(1) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

近期热帖

近期精华帖

热门推荐