题目链接:点击查看

题目描述:

给定多个字母串,求其中任意两个字母串的长度乘积的最大值,且这两个字母串不能含有相同字母。
输入输出:
输入: ["abcw","baz","foo","bar","xtfn","abcdef"]
输出: 16 
输入: ["a","ab","abc","d","cd","bcd","abcd"]
输出: 4 

题目分析:

可以为每个字母串建立一个长度为 26 的二进制数字,每个位置表示是否存在该字母。如果两个字母串含有重复数字,那它们的二进制表示的按位与不为 0。同时,我们可以建立一个哈希表来存储字母串(在数组的位置)到二进制数字的映射关系,方便查找调用
代码:

int maxProduct(vector<string>&words)
{unordered_map<int,int>hash;int ans=0;for(const string &word:words){int mask=0,size=word.size();for(const char &c:word)//用 c来接收word里面每一个字符 {mask|=1<<(c-'a');//创建位掩码:遍历单词的每个字母,计算该字母在掩码中的位置 n = (int)ch - (int)'a',然后创建一个第 n 位为 1 的掩码 n_th_bit = 1 << n //然后通过或操作将该码合并到位掩码中 bitmask |= n_th_bit}hash[mask]=max(hash[mask],size);for(const auto&[h_mask,h_len]:hash)//计算两个不同字符串的最大长度的乘积 {if(!(mask&h_mask))//若为0则含有重复字符 {ans=max(ans,size*h_len);   }   }   }return ans;
} 

leetCode 318 最大单词长度乘积(位掩码,位运算,二进制)相关推荐

  1. LeetCode 318. 最大单词长度乘积(位运算)

    1. 题目 给定一个字符串数组 words,找到 length(word[i]) * length(word[j]) 的最大值,并且这两个单词不含有公共字母.你可以认为每个单词只包含小写字母.如果不存 ...

  2. leetcode 318 最大单词长度乘积

    https://leetcode-cn.com/problems/maximum-product-of-word-lengths/ 题目 给定一个字符串数组wordswordswords,找到leng ...

  3. LeetCode 391. 完美矩形(扫描线) / 318. 最大单词长度乘积 / 563. 二叉树的坡度

    391. 完美矩形 2021.11.16 每日一题 题目描述 给你一个数组 rectangles ,其中 rectangles[i] = [xi, yi, ai, bi] 表示一个坐标轴平行的矩形.这 ...

  4. 【LeetCode笔记 - 每日一题】318. 最大单词长度乘积(Java、位运算)

    文章目录 题目描述 思路 && 代码 题目描述 挺不错!有bitmap的感觉了. 思路 && 代码 思路好想:两两对比,无公共判断,维护 res 那么,如何进行公共判断 ...

  5. leetcode 318. Maximum Product of Word Lengths | 318. 最大单词长度乘积

    题目 https://leetcode.com/problems/maximum-product-of-word-lengths/ 题解 中规中矩的题目,中规中矩的思路,不像是一个 medium 题. ...

  6. 318. 最大单词长度乘积 golang

    question 给定一个字符串数组 words,找到 length(word[i]) * length(word[j]) 的最大值,并且这两个单词不含有公共字母.你可以认为每个单词只包含小写字母.如 ...

  7. C++题解-Leecode 318. 最大单词长度乘积——Leecode每日一题系列

    今天是坚持每日一题打卡的第二十二天 题目链接:https://leetcode-cn.com/problems/maximum-product-of-word-lengths/ 题解汇总:https: ...

  8. JAVA(2021-11-17)leetcode每日一题---- 最大单词长度乘积

    这个题的难点并不在于找的过程,因为没有什么可以记录的,就是要挨个比,n平方的复杂度.但是这个题的优化空间在于比较两个单词是否含有公共字母. 一看到是否含有重复的,是否含有重复字符,我们就应该想到是不是 ...

  9. python找最长的单词_318. 最长单词长度乘积(Python)

    题目 难度:★★★☆☆ 类型:数组,字符串 方法:无 给定一个字符串数组 words,找到 length(word[i]) * length(word[j]) 的最大值,并且这两个单词不含有公共字母. ...

  10. 剑指Offer Ⅱ 005.单词长度的最大乘积 (力扣剑指Offer专项突击版——整数_5)

    题目 给定一个字符串数组 words,请计算当两个字符串 words[i] 和 words[j] 不包含相同字符时,它们长度的乘积的最大值.假设字符串中只包含英语的小写字母.如果没有不包含相同字符的一 ...

最新文章

  1. PyTorch关键算法疑似侵权,Facebook被起诉
  2. Linux下的iwpriv(iwlist、iwconfig)的简单应用
  3. 避免强光的一些注意点
  4. c# winform 应用编程代码总结 5
  5. rabbitmq可靠性投递_阿里Java研发二面:了解RabbitMQ?说说RabbitMQ可靠性投递
  6. 保利管道微服务1_.netcore 3.1高性能微服务架构:webapi规范
  7. 卷积神经网络_mnist
  8. 关于EXP-00056: 遇到 ORACLE 错误 1455 ORA-01455: 转换列溢出整数数据类型 EXP-00000: 导出终止失败 的问题解决方法整理
  9. 6种展示代码的绝佳方式
  10. IOS 10 适配系列 _3_ Xcode 8 GM seed
  11. 中国电信翼支付网关接口接入
  12. Redis 6.0新特性——ACLs
  13. 计算机毕业论文致谢信范文,论文致谢信10篇
  14. 机器人可操作度 matlab,双臂机器人运动学与可操作性及其优化的研究
  15. MATLAB计算英文符号信源熵,基于matlab的英文文本信息量的统计-正确.doc
  16. genicam 相机java,机器视觉必知-GenICam相机通用接口标准
  17. php检测wifi,WFilter插件 - 随身wifi和私接路由检测
  18. java中将秒转化为几小时几分钟几秒的方法
  19. 如何写一个自动抢微信红包的程序
  20. 魔兽世界70人最多服务器,数据告诉你,《魔兽世界》TBC怀旧服有多受欢迎

热门文章

  1. Java 生成条形码 订单条形码
  2. 如何完美的卸载Office2007?
  3. 技本功|数据安全之IDC数据容灾设计实现
  4. HP1010 不能连续打印维修一例
  5. 原创nio socket mina+javascript+flash实现commet长连接网页聊天室
  6. cherry 键盘失灵记录
  7. 优达前端课程免费分享
  8. 文件处理技巧,如何快速复制并覆盖已存在的文件
  9. Android反射系统截图Api
  10. 嵌入式系统开发与应用——Linux系统Socket网络编程