給定乙個字串陣列 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 解釋: 不存在這樣的兩個單詞。
首先我們採用一種方式來描述每個單詞,快速判斷兩個單詞是否有相同的元素。
題目假定全是小寫字母,共有26個,因此可以通過乙個int型別的整數來描述(共32位,可以表示26個字母是否存在)。
例如"acg"–>1000101,「aad」–>1001。
確定了單詞的表示方法後,遍歷每個單詞,判斷其它單詞與當前單詞是否有相同的字元,例如"acd"和"ab",分別表示為1101和11,對這兩個單詞進行「與」操作,如果結果不為0,表示兩個單詞中有相同字元。
class
solution
vector<
int>
nums
(words.
size()
);// 每個單詞表示成二進位制形式
for(
int i =
0; i < words.
size()
;++i)
}int res =0;
for(
int i =
0; i < words.
size()
-1;++i)}}
return res;}}
;
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解釋 這兩個單詞為...
Leetcode 318 最大單詞長度乘積
給定乙個字串陣列words,找到length word i length word j 的最大值,並且這兩個單詞不含有公共字母。你可以認為每個單詞只包含小寫字母。如果不存在這樣的兩個單詞,返回 0。示例 1 輸入 abcw baz foo bar xtfn abcdef 輸出 16解釋 這兩個單詞為...