leetcode318 最大單詞長度乘積

2021-09-13 15:00:01 字數 1412 閱讀 4884

給定乙個字串陣列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解釋:不存在這樣的兩個單詞。
看題目一眼  題意很明朗 顫顫巍巍的用暴力方法寫了一遍 貼一下**

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 解釋 這兩個單詞為...