
一、题目描述
给定一个元素类型为小写字符串的数组,请计算两个没有相同字符的元素长度乘积的最大值,
如果没有符合条件的两个元素,返回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机考。专栏会持续更新,每天在线答疑。














![[ARM+Linux] 基于全志h616外设开发笔记](https://img-blog.csdnimg.cn/4536d97120b142dfa06e22eb878a693c.png)





