每日一题:318. 最大单词长度乘积

解题思路

统计每个串中的字符,将不包含相同字符的串长相乘时间复杂度O(N^3)

代码

class Solution {
    public int maxProduct(String[] words) {
        int ans = 0;
        Map<Integer,int[]> map = new HashMap<>();
        for(int i=0;i<words.length;i++){
            int[] mem = new int[26];
            for (int j=0;j<words[i].length();j++){
                mem[words[i].charAt(j)-97]++;
            }
            map.put(i,mem);
        }
        for(int i=0;i<words.length;i++){
            int[] memi = map.get(i);
            for (int j=i+1;j<words.length;j++){
                boolean flag = true;
                int[] memj = map.get(j);
                for (int z=0;z<26;z++){
                    if (memi[z]!=0 && memj[z]!=0){
                        flag = false;
                        break;
                    }
                }
                if (flag){
                    ans = Math.max(words[i].length()*words[j].length(),ans);
                }
            }
        }
        return ans;
    }
}

你可能感兴趣的:(java,编辑器,vscode)