描述
给定一个元素类型为小写字符串的数组,请计算两个没有相同字符的元素长度乘积的最大值如果没有符合条件的两个元素,返回0。
输入描述:
输入为一个半角逗号分隔的小写字符串的数组,2<= 数组长度<=100,0<字符串长度<= 50。
输出描述:
两个没有相同字符的元素 长度乘积的最大值。
用例:
输入:
iwdvpbn,hk,iuop,iikd,kadgpf
输出:
14
说明:
数组中有5个元素。
iwdvpbn与hk无相同的字符,满足条件,iwdvpbn的长度为7,hk的长度为2,乘积为14(7*2)。iwdvpbn与iuop、iikd、kadgp均有相同的字符,不满足条件。iuop与iikd、kadgpf均有相同的字符,不满足条件。ikd与kadgpf有相同的字符,不满足条件。因此,输出为14。
java实现
package com.des.data.test;
public class CalculateMaximumProduct {
public static void main(String[] args) {
String str = "iwdvpbn,hk,iuop,iikd,kadgpf";
System.out.println(calculate(str));
}
public static int calculate(String str) {
String[] strs = str.split(",");
int max = 0;
for (int i = 0; i < strs.length; i++) {
String strA = strs[i];
if (i + 1 >= strs.length) {
break;
}
for (int j = i + 1; j < strs.length; j++) {
String strB = strs[j];
boolean sameAble = true;//默认满足条件
for (int k = 0; k < strB.length(); k++) {
String c = new String(new char[]{strB.charAt(k)});
if (strA.contains(c)) {
sameAble = false;//只要有一个相同,就不满足
}
}
if (sameAble) {
int f = strA.length() * strB.length();
if (f > max) {
max = f;
}
}
}
}
return max;
}
}