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));
}
}
第二题有哪位大佬会吗?
凡岛公司福利 667人发布