> 文章列表 > 华为OD机试真题(Java),计算最大乘积(100%通过+复盘思路)

华为OD机试真题(Java),计算最大乘积(100%通过+复盘思路)

华为OD机试真题(Java),计算最大乘积(100%通过+复盘思路)

在这里插入图片描述

一、题目描述

给定一个元素类型为小写字符串的数组,请计算两个没有相同字符的元素长度乘积的最大值,

如果没有符合条件的两个元素,返回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机考。专栏会持续更新,每天在线答疑。

在这里插入图片描述