給定乙個字串陣列words
,找到length(word[i]) * length(word[j])
的最大值,並且這兩個單詞不含有公共字母。你可以認為每個單詞只包含小寫字母。如果不存在這樣的兩個單詞,返回 0。
示例 1:
輸入:示例 2:["abcw","baz","foo","bar","xtfn","abcdef"]
輸出:16解釋:這兩個單詞為
"abcw", "xtfn"
。
輸入:示例 3:["a","ab","abc","d","cd","bcd","abcd"]
輸出:4解釋:
這兩個單詞為"ab", "cd"
。
輸入:看題目一眼 題意很明朗 顫顫巍巍的用暴力方法寫了一遍 貼一下**["a","aa","aaa","aaaa"]
輸出:0解釋:不存在這樣的兩個單詞。
public int maxproduct(string words)
}} return res;
} private boolean hassamechar(string str1, string str2)
} return false;
}
果然,超時了。。。
再想一想其他方法
考慮一下使用位運算
把每個字串陣列看成乙個26大小的陣列,小寫字母a-z是26位,「abcd」 的int值為 0000 0000 0000 0000 0000 0000 0000 1111, 「wxyz」 的int值為 1111 0000 0000 0000 0000 0000 0000 0000
這樣兩個進行與(&) 如果得到0則不含相同元素, 如果不為0則有相同元素。
public int maxproduct(string words)
} int res = 0;
for (int i = 0; i < len; i++)
}} return res;
}
leetcode 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解釋 這兩個單詞為...
Leetcode 318 最大單詞長度乘積
給定乙個字串陣列 words 找到length word i length word j 的最大值,並且這兩個單詞不含有公共字母。你可以認為每個單詞只包含小寫字母。如果不存在這樣的兩個單詞,返回0。示例1 輸入 abcw baz foo bar xtfn abcdef 輸出 16 解釋 這兩個單詞為...