318.最大单词长度乘积

编程入门 行业动态 更新时间:2024-10-27 23:31:16

318.最大单词长度<a href=https://www.elefans.com/category/jswz/34/1767703.html style=乘积"/>

318.最大单词长度乘积

题目来源:

        leetcode题目,网址:318. 最大单词长度乘积 - 力扣(LeetCode)

解题思路:

       位运算+暴力遍历。使用 1 个int 型整数的低 26 位记录所给字符串是否包含某个英文字符,使用 res 记录结果。在遍历时,若两个字符串对应整数相与结果为 0,则无相同字符,更新 res;否则有相同字符。

解题代码:

class Solution {
public:int maxProduct(vector<string>& words) {int res=0;vector<int> cnt(words.size());for(int i=0;i<words.size();i++){cnt[i]=count(words[i]);}for(int i=0;i<words.size();i++){for(int j=i+1;j<words.size();j++){if((cnt[i]&cnt[j])==0 && res<words[i].length()*words[j].length()){res=words[i].length()*words[j].length();}}    }return res;}int count(string str){int res=0;for(int i=0;i<str.length();i++){res=res|(1<<(str[i]-'a'));}return res;}
};

总结:

       官方题解给出了两种解法。第一种是位运算,如上。第二种是位运算优化,使用哈希表记录位掩码及该掩码对应的最长长度,然后遍历哈希表求最大值。


更多推荐

318.最大单词长度乘积

本文发布于:2023-11-16 10:34:35,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1617966.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:乘积   单词   长度

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!