一、题目描述
给定一个元素类型为小写字符串的数组,请计算两个没有相同字符的元素长度乘积的最大值,
如果没有符合条件的两个元素,返回0。
二、输入描述
输入为一个半角逗号分隔的小写字符串的数组,2 <= 数组长度<=100,0 < 字符串长度<= 50。
三、输出描述
两个没有相同字符的元素 长度乘积的最大值。
四、Java算法源码
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String[] arr = sc.nextLine().split(",");
int max = 0;
for (int i = 0; i < arr.length; i++) {
for (int j = i + 1; j < arr.length; j++) {
if (!check(arr[i], arr[j])) {
max = Math.max(max, arr[i].length() * arr[j].length());
}
}
}
System.out.println(max);
}
private static boolean check(String a, String b) {
char[] arr1 = a.toCharArray();
char[] arr2 = b.toCharArray();
Arrays.sort(arr1);
Arrays.sort(arr2);
int i = 0;
int j = 0;
while (i < a.length() && j < b.length()) {
if (arr1[i] == arr2[j]) {
return true;
} else if (arr1[i] > arr2[j]) {
j++;
} else if (arr1[i] < arr2[j]) {
i++;
}
}
return false;
}
五、效果展示
输入
qwerty,asd,qwesd,eraffa,qzxca
输出
18
说明
数组中有5个元素。
qwerty与asd无相同的字符,满足条件,qwerty的长度为6,asd的长度为3,乘积为18。
qwerty与qwesd、eraffa、qzxca均有相同的字符,不满足条件。
asd与qwesd、eraffa、qzxca均有相同的字符,不满足条件。
qwesd与eraffa,qzxca有相同的字符,不满足条件。
eraffa与qzxca有相同的字符,不满足条件。
因此,输出为18。
🏆本文收录于,华为OD机试2023(Java)
本专栏包含了最新最全的2023年华为OD机试真题,有详细的分析和Java解答。已帮助1000+同学顺利通过OD机考。专栏会持续更新,每天在线答疑。