网站建设mrd文档模板,重庆永川网站建设价格,北京网站建设百度排名,建e网app目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2023B卷题库疯狂收录中#xff0c;刷题点这里 专栏导读
本专栏收录于《华为OD机试#xff08;JAVA#xff09;真题#xff08;A卷B卷#… 目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2023B卷题库疯狂收录中刷题点这里 专栏导读
本专栏收录于《华为OD机试JAVA真题A卷B卷》。
刷的越多抽中的概率越大每一题都有详细的答题思路、详细的代码注释、样例测试发现新题目随时更新全天CSDN在线答疑。
一、题目描述
给定一个元素类型为小写字符串的数组请计算两个没有相同字符的元素长度乘积的最大值
如果没有符合条件的两个元素返回0。
二、输入描述
输入为一个半角逗号分隔的小写字符串的数组2 数组长度1000 字符串长度 50。
三、输出描述
两个没有相同字符的元素 长度乘积的最大值。
四、解题思路
题目要求在给定的字符串数组中找出两个没有相同字符的元素计算它们的长度乘积的最大值。
读取输入的字符串数组使用逗号分隔得到字符串数组 arr定义变量 max 初始化为 0用于保存最大的长度乘积使用两层循环遍历数组中的每对不同的字符串调用 check 方法检查两个字符串是否有相同字符如果没有相同字符则计算它们的长度乘积并更新 max输出结果 max。
解题思路分析
该算法首先读取输入的字符串数组并定义变量 max 用于保存最大的长度乘积。
然后使用两层循环遍历字符串数组中的每对不同的字符串。对于每对字符串调用 check 方法检查它们是否有相同字符。如果没有相同字符则计算它们的长度乘积并与 max 进行比较更新 max。
最后输出结果 max。
check 方法用于检查两个字符串是否有相同字符。它首先将两个字符串转换为字符数组并对字符数组进行排序。然后使用双指针法比较两个字符数组的元素如果找到相同的字符返回 true否则返回 false。
五、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])) {// 如果没有相同字符则计算它们的长度乘积并更新 maxmax 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;
}六、效果展示
1、输入
qwerty,asd,qwesd,eraffa,qzxca
2、输出
18
3、说明
数组中有5个元素。
qwerty与asd无相同的字符满足条件qwerty的长度为6asd的长度为3乘积为18。
qwerty与qwesd、eraffa、qzxca均有相同的字符不满足条件。
asd与qwesd、eraffa、qzxca均有相同的字符不满足条件。
qwesd与eraffa,qzxca有相同的字符不满足条件。
eraffa与qzxca有相同的字符不满足条件。
因此输出为18。 下一篇华为OD机试 - 荒岛求生 - 栈StackJava 2023 B卷 100分
本文收录于华为OD机试JAVA真题A卷B卷
刷的越多抽中的概率越大每一题都有详细的答题思路、详细的代码注释、样例测试发现新题目随时更新全天CSDN在线答疑。