题目描述:
给定一个元素类型为小写字符串的数组,请计算两个没有相同字符的元素长度乘积的最大值。
如果没有符合条件的两个元素返回0。
输入描述:
输入为一个半角逗号分割的小写字符串数组
2<= 数组长度 <=100
0< 字符串长度 <=50
输出描述
两个没有相同字符的元素长度乘积的最大值
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String str = in.nextLine();
String[] strs = str.split(",");
List<List<Character>> charactersList = new ArrayList<>();
for (int i = 0; i < strs.length; i++) {
char[] chars = strs[i].toCharArray();
List<Character> characters = new String(chars).chars().mapToObj(c->(char)c).collect(Collectors.toList());
charactersList.add(characters);
}
//遍历characterlist
boolean noSingleWordEq = true;
int count = 0;
for (List<Character> characters : charactersList) {
//遍历所有的单词
for (int i = 0; i < strs.length; i++) {
String word = new String(strs[i]).chars().mapToObj(c->(char)c).collect(Collectors.toList()).toString();
String wordList = characters.toString();
//去掉自己
if (!word.equals(wordList)){
char[] chars = strs[i].toCharArray();
//比较其他单词的每一个字母
noSingleWordEq = true;
for (int j = 0; j < chars.length; j++) {
if (characters.contains(chars[j])) {
//如果有一个相同,则直接退出本次循环,这个单词就不比较了
noSingleWordEq = false;
break;
}
}
if (noSingleWordEq){
if (count < characters.size()* chars.length){
count = characters.size()* chars.length;
}
}
}
}
}
System.out.println(count);
}