給定乙個字串陣列 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
解釋: 不存在這樣的兩個單詞。
a
代表1
,b
代表2
,c
代表4
依次類推,注意相同的字元只加一次,判斷兩個單詞是否有公共字元時只需將兩個數字作&
運算看結果是否為0即可,當然可能有多個單詞轉換後的數字相同,但我們只需要最長單詞的長度即可
/**
* @param words
* @return
*/var
maxproduct
=function
(words)
;for
(let word of words)
else
}let wordbits = object.
keys
(map)
;let max =0;
for(
let i=
0; i}return max;
function
count
(word)
;for
(let alpha of word)
return sum;}}
;
318 最大單詞長度乘積
給定乙個字串陣列 words,找到 length word i length word j 的最大值,並且這兩個單詞不含有公共字母。你可以認為每個單詞只包含小寫字母。如果不存在這樣的兩個單詞,返回 0。示例 1 輸入 abcw baz foo bar xtfn abcdef 輸出 16 解釋 這兩個...
leetcode 318 最大單詞長度乘積
給定乙個字串陣列words,找到length word i length word j 的最大值,並且這兩個單詞不含有公共字母。你可以認為每個單詞只包含小寫字母。如果不存在這樣的兩個單詞,返回 0。示例 1 輸入 abcw baz foo bar xtfn abcdef 輸出 16解釋 這兩個單詞為...
leetcode318 最大單詞長度乘積
給定乙個字串陣列words,找到length word i length word j 的最大值,並且這兩個單詞不含有公共字母。你可以認為每個單詞只包含小寫字母。如果不存在這樣的兩個單詞,返回 0。示例 1 輸入 abcw baz foo bar xtfn abcdef 輸出 16解釋 這兩個單詞為...