1. 题目

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

示例 1:
输入: ["abcw","baz","foo","bar","xtfn","abcdef"]
输出: 16
解释: 这两个单词为 "abcw", "xtfn"。示例 2:
输入: ["a","ab","abc","d","cd","bcd","abcd"]
输出: 4
解释: 这两个单词为 "ab", "cd"。示例 3:
输入: ["a","aa","aaa","aaaa"]
输出: 0
解释: 不存在这样的两个单词。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/maximum-product-of-word-lengths
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 位运算

  • 将字符串的比较转换成数字的比较
  • 题目说只有小写字符,那最多只有26位,用32位的 int 的每一位 bit 记录一个字符串是否包含某种字母
  • 然后双重for循环,比较各字符串对应的数值的 & 操作值 是否等于0(各 bit 都不同,即字符都不同)
class Solution {public:int maxProduct(vector<string>& words) {vector<int> num(words.size());int ans = 0, i = 0, j, temp;for(string& word : words)num[i++] = str2num(word);for(i = 0; i < words.size(); ++i)for(j = i+1; j < words.size(); ++j){if((num[i]&num[j]) == 0)//数字的各个位上01(字符)都不相同{temp = words[i].length()*words[j].length();ans = max(ans, temp);}}return ans;}int str2num(string& s){int i = 0;for(char& c : s)i |= (1<<(c-'a'));//字符串中出现的字符转成int的各个位的状态return i;}
};

LeetCode 318. 最大单词长度乘积(位运算)相关推荐

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

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

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

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

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

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

  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. JAVA(2021-11-17)leetcode每日一题---- 最大单词长度乘积

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

  8. [Leetcode][第78题][JAVA][子集][位运算][回溯]

    [问题描述][中等] [解答思路] 1. 位运算 复杂度 class Solution {List<Integer> t = new ArrayList<Integer>(); ...

  9. LeetCode 1286. 字母组合迭代器(回溯/位运算)

    文章目录 1. 题目 2. 解题 2.1 回溯 2.2 位运算 1. 题目 请你设计一个迭代器类,包括以下内容: 一个构造函数,输入参数包括:一个 有序且字符唯一 的字符串 characters(该字 ...

最新文章

  1. 携程数据库高可用架构实践
  2. [flask实践] 解决mysql数据库不支持中文的问题
  3. 提高 TDD 效率的一些小诀窍
  4. 控制反转IOC与依赖注入DI
  5. XML Tree(树形结构)
  6. [Buzz.Today]2013.03.14
  7. 从李一男,到美女博士姚婷,任正非:要把中国的天才,留在中国
  8. js属性对象的hasOwnProperty方法
  9. vue保存页面的值_vue前端页面跳转参数传递及存储
  10. java地址有什么构成_IP地址采用分层结构,由(     )组成。
  11. Linux locale
  12. IEC 60730-1-2020.最新原版,可复制文字 : 家用自己设备自动电气控制 - 第 1 部分:一般要求
  13. 渗透测试专业术语——攻击篇
  14. PPT分享 | 怎么在区块链上保护隐私?
  15. MATLAB强化学习实战(十) 多智能体的路径跟随控制
  16. 什么是java mvc模式_什么是MVC?
  17. Appium+Pytest+Allure集成PO项目管理模式实现自动化测试
  18. 怎样看股市K线图指标之相对价位指标CKD
  19. 医疗行业:容灾备份平台建设及运维难点
  20. 天线工程手册_相控阵天线方向图第3部分:旁瓣和锥削

热门文章

  1. String类 写出类的成员函数实现
  2. qlabel可以选中吗_惊现凡尔赛式排版!原来微信公众号排版样式还可以“变装”?...
  3. 内核启动的C语言阶段——start_kernel函数
  4. Install Python3.6 on Amazon Linux/EC2 在Amazon Linux实例中安装使用Python3.6
  5. 树莓派安装CentOS
  6. Newtonsoft.Json 获取匿名类数据
  7. Spring 事务与脏读、不可重复读、幻读
  8. flatpickr功能强大的日期时间选择器插件
  9. iOS之加密的三种方法
  10. Android开发学习笔记-自定义组合控件