题目链接:318. 最大单词长度乘积 – 力扣(LeetCode) (leetcode-cn.com)
难度:Medium
每个单词的字母呈现的状况,可以用二进制位来保存,这样判别两个单词是否有公共字母,进行一次 &\& 运算即可。
对于位数比较低的状况判别,一般都能用二进制。
#define max(a,b) ( a>b?a:b )
class Solution {
public:
int maxProduct(vector<string>& words) {
int cnt[1005];
int len = words.size();
memset(cnt,0,sizeof(cnt));
for(int i=0;i<len;i++){
for(auto ch:words[i]){
int num = 1<<(ch-'a');
cnt[i] |= num;
}
}
int ans = 0;
for(int i=0;i<len;i++){
for(int j=i+1;j<len;j++){
if(!(cnt[i] & cnt[j])){
ans = max(words[i].size() * words[j].size(), ans);
}
}
}
return ans;
}
};
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。