<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
給你一個字串陣列 words ,找出並返回 length(words[i]) * length(words[j]) 的最大值,並且這兩個單詞不含有公共字母。如果不存在這樣的兩個單詞,返回 0 。
*範例 1:
輸入:words = ["abcw","baz","foo","bar","xtfn","abcdef"]
輸出:16
解釋:這兩個單詞為 "abcw", "xtfn"。
輸入:words = ["a","ab","abc","d","cd","bcd","abcd"]
輸出:4
解釋:這兩個單詞為 "ab", "cd"。
輸入:words = ["a","aa","aaa","aaaa"]
輸出:0
解釋:不存在這樣的兩個單詞。
為了得到最大單詞長度乘積,樸素的做法是,遍歷字串陣列 words 中的每一對單詞,判斷這一對單詞是否有公共字母,如果沒有公共字母,則用這一對單詞的長度乘積更新最大單詞長度乘積。
題目約定了每個單詞僅包含小寫字母,所以,我們可以將單詞中的每個字母都對映到一個 int 型別的不同位上,這樣,就做到了每個單詞都對應一個 int 型別的數值,這樣的話,我們對比兩個單詞是否包含相同的字母,只需要把它們對應的 int 數值做 & 運算,看是不是等於 0 即可,如果等於 0 ,說明沒有相同的位是 1,也就不存在相同的字母。
這樣,我們在比較兩個單詞是否沒有公共字母的時候只要直接按位元與一下即可,沒有公共字母應該得到的值是0,其他情況得到的值都不為零。
class Solution { public int maxProduct(String[] words) { Map<Integer, Integer> map = new HashMap<Integer, Integer>(); int length = words.length; for (int i = 0; i < length; i++) { int mask = 0; String word = words[i]; int wordLength = word.length(); for (int j = 0; j < wordLength; j++) { mask |= 1 << (word.charAt(j) - 'a'); } if (wordLength > map.getOrDefault(mask, 0)) { map.put(mask, wordLength); } } int maxProd = 0; Set<Integer> maskSet = map.keySet(); for (int mask1 : maskSet) { int wordLength1 = map.get(mask1); for (int mask2 : maskSet) { if ((mask1 & mask2) == 0) { int wordLength2 = map.get(mask2); maxProd = Math.max(maxProd, wordLength1 * wordLength2); } } } return maxProd; } }
l:陣列中所有單詞的長度之和
n:陣列長度
時間複雜度:o(l+n^2)
空間複雜度:o(n)
具體的方法思路已經在上文中表述,詳情請看上文內容
func maxProduct(words []string) int { hash := func(word string) int { res := 0 for _, r := range word{ res |= 1 << (r - 'a') } return res } m, ans := map[int]int{}, 0 for _, word := range words { h := hash(word) if m[h] < len(word) { for other, v := range m { if((other & h) == 0){ if tmp := v * len(word); tmp > ans { ans = tmp } } } m[h] = len(word) } } return ans }
l:陣列中所有單詞的長度之和
n:陣列長度
時間複雜度:o(l+n^2)
空間複雜度:o(n)
以上就是Go Java演演算法最大單詞長度乘積範例詳解的詳細內容,更多關於Go Java演演算法單詞長度乘積的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45