当前位置:网站首页>[算法] 剑指offer2 golang 面试题5:单词长度的最大乘积
[算法] 剑指offer2 golang 面试题5:单词长度的最大乘积
2022-07-06 09:18:00 【邓嘉文Jarvan】
[算法] 剑指offer2 golang 面试题5:单词长度的最大乘积
题目1:
给定一个字符串数组 words,请计算当两个字符串 words[i] 和 words[j] 不包含相同字符时,它们长度的乘积的最大值。假设字符串中只包含英语的小写字母。如果没有不包含相同字符的一对字符串,返回 0。
示例 1:
输入: words = [“abcw”,“baz”,“foo”,“bar”,“fxyz”,“abcdef”]
输出: 16
解释: 这两个单词为 “abcw”, “fxyz”。它们不包含相同字符,且长度的乘积最大。
示例 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] 仅包含小写字母
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/aseY1I
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路1:
字母的个数只有 26 个,我们可以用一个 int 32 的位来记录该单词是否含有该字母
比如
“ac”0101
ac:最后1位代表a存在,倒数第二位0代表b不存在
“bd”1010
ac的二进制 & bd的二进制如果为0,就证明不相同, 反之相同
- 将word转化为二进制时间复杂度 O(n*k)
- 使用 & 运算找到没有重复数字的 word 计算长度刷新长度时间复杂度 O(n2)
代码
func maxProduct(words []string) int {
//思路:
// * 将word转化为二进制时间复杂度 O(n*k)
// * 使用 & 运算找到没有重复数字的 word 计算长度刷新长度时间复杂度 O(n2)
//参数处理
if len(words) < 2 {
return 0
}
//将word转化为二进制时间复杂度 O(n*k)
nums := make([]int,len(words))
for i:=0;i<len(words);i++ {
for j:=0;j<len(words[i]);j++{
nums[i] |= (1<<(words[i][j] - 'a'))
}
}
//使用 & 运算找到没有重复数字的 word 计算长度刷新长度时间复杂度 O(n2)
max := 0
for i:=0;i<len(words);i++ {
for j:=i + 1;j<len(words);j++{
if nums[i] & nums[j] == 0 {
tempMax := len(words[i]) * len(words[j])
if tempMax > max {
max = tempMax
}
}
}
}
return max
}
测试
边栏推荐
- (the first set of course design) sub task 1-5 317 (100 points) (dijkstra: heavy edge self loop)
- [Clickhouse kernel principle graphic explanation] about the collaborative work of partitioning, indexing, marking and compressed data
- 單片機藍牙無線燒錄
- 1041 Be Unique (20 point(s))(哈希:找第一个出现一次的数)
- idea中导包方法
- Particle system for introduction to unity3d Foundation (attribute introduction + case production of flame particle system)
- What are the advantages of using SQL in Excel VBA
- Unity3D,阿里云服务器,平台配置
- 【GNSS】抗差估计(稳健估计)原理及程序实现
- 使用rtknavi进行RT-PPP测试
猜你喜欢
Theoretical derivation of support vector machine
Excel导入,导出功能实现
ESP8266连接onenet(旧版MQTT方式)
【干货】提升RTK模糊度固定率的建议之周跳探测
Lock wait timeout exceeded try restarting transaction
Fairygui character status Popup
Unity scene jump and exit
Unity3d makes the registration login interface and realizes the scene jump
Latex learning
FGUI工程打包发布&导入Unity&将UI显示出来的方式
随机推荐
(5) Introduction to R language bioinformatics -- ORF and sequence analysis
PR 2021 quick start tutorial, first understanding the Premiere Pro working interface
It has been solved by personal practice: MySQL row size too large (> 8126) Changing some columns to TEXT or BLOB or using ROW_ FORMAT
(四)R语言的数据可视化——矩阵图、柱状图、饼图、散点图与线性回归、带状图
FairyGUI人物状态弹窗
Unity3D制作注册登录界面,并实现场景跳转
Fabrication of fairygui simple Backpack
MySQL performance tuning - dirty page refresh
How to improve the deletion speed of sequential class containers?
單片機藍牙無線燒錄
Problèmes avec MySQL time, fuseau horaire, remplissage automatique 0
Affichage du changement de valeur du Buff de gain de l'interface graphique de défaillance
idea中导包方法
What are the functions and features of helm or terrain
FairyGUI条子家族(滚动条,滑动条,进度条)
Unity3d makes the registration login interface and realizes the scene jump
2021.11.10汇编考试
Unity3D摄像机,键盘控制前后左右上下移动,鼠标控制旋转、放缩
[offer9]用两个栈实现队列
RTKLIB: demo5 b34f.1 vs b33