1、题目描述
给定一个字符串数组 words,找到 length(word[i]) * length(word[j]) 的最大值,并且这两个单词不含有公共字母。你可以认为每个单词只包含小写字母。如果不存在这样的两个单词,返回 0。
2、算法分析
知识补充:
判断一个字符串是否包含另一个字符串的字符,使用indexOf(),先看下源码
public int indexOf(String str) { return indexOf(str, 0); }
1、描述 java.lang.String.indexOf() 的用途是在一个字符串中寻找一个字的位置,同时也可以判断一个字符串中是否包含某个字符。 2、声明 int indexOf(int ch,int fromIndex) 3、返回值 indexOf的返回值为int 4、案例 public static void main(String[] args) { String str1 = "abcdefg"; int result1 = str1.indexOf("a"); if(result1 != -1){ System.out.println("字符串str中包含子串“a”"+result1); }else{ System.out.println("字符串str中不包含子串“a”"+result1); } }
简单的就是暴力解法。
遍历每一个单词,两两比较单词是否存在相同字符。
3、代码实现
import java.util.*;
class Solution {
public int maxProduct(String[] words) {
int res = 0;
// 遍历每一个单词
for(int i = 0;i < words.length;i++){
// 记录下第一个单词
String word1 = words[i];
// 遍历每一个单词
for(int j = i+1;j < words.length;j++){
String word2 = words[j];
// 比较两个单词是否有相同字符
if(!hasSame(word1,word2)){
res = Math.max(res,word1.length()*word2.length());
}
}
}
return res;
}
public boolean hasSame(String word1,String word2){
// 看word1中是否包含word2的字符
for(char c: word1.toCharArray()){
if(word2.indexOf(c) != -1){
return true;
}
}
return false;
}
}