网站设计 seo,建造师职业人才网平台,免费网站免费进入在线,瑞安市聚齐网络科技有限公司3妹#xff1a;哇#xff0c;今天好冷啊#xff0c; 不想上班。 2哥#xff1a;今天气温比昨天低8度#xff0c;3妹要空厚一点啊。 3妹 : 嗯#xff0c; 赶紧把我的羽绒服找出来穿上#xff01; 2哥#xff1a;哈哈#xff0c;那倒还不至于#xff0c; 不过气温骤降哇今天好冷啊 不想上班。 2哥今天气温比昨天低8度3妹要空厚一点啊。 3妹 : 嗯 赶紧把我的羽绒服找出来穿上 2哥哈哈那倒还不至于 不过气温骤降一定要预防流感~ 3妹听说东北已经暴雪了 2哥是啊他们还放一假不用上班。哈哈。 3妹哼 为什么上海不放假呢。。 我先躲在被窝里刷刷题再去公司吧~
题目
给你一个字符串数组 words 找出并返回 length(words[i]) * length(words[j]) 的最大值并且这两个单词不含有公共字母。如果不存在这样的两个单词返回 0 。
示例 1
输入words [“abcw”,“baz”,“foo”,“bar”,“xtfn”,“abcdef”] 输出16 解释这两个单词为 “abcw”, “xtfn”。 示例 2
输入words [“a”,“ab”,“abc”,“d”,“cd”,“bcd”,“abcd”] 输出4 解释这两个单词为 “ab”, “cd”。 示例 3
输入words [“a”,“aa”,“aaa”,“aaaa”] 输出0 解释不存在这样的两个单词。
提示
2 words.length 1000 1 words[i].length 1000 words[i] 仅包含小写字母
思路 根据题意进行模拟利用每个 words[i] 只有小写字母且只需要区分两字符是否有字母重复。
我们可以使用一个 int 来代指某个 word[i]低 26 来代指字母 a-z 是否出现过。
然后对每个「字符对」所对应的两个 int 值执行 操作若两字符无重复字符则结果为 0并得出最终答案。
java代码
class Solution {public int maxProduct(String[] words) {int length words.length;int[] masks new int[length];for (int i 0; i length; i) {String word words[i];int wordLength word.length();for (int j 0; j wordLength; j) {masks[i] | 1 (word.charAt(j) - a);}}int maxProd 0;for (int i 0; i length; i) {for (int j i 1; j length; j) {if ((masks[i] masks[j]) 0) {maxProd Math.max(maxProd, words[i].length() * words[j].length());}}}return maxProd;}
}