leetcode 318: Maximum Product of Word Lengths

Given a string array words, find the maximum value of length(word[i]) * length(word[j]) where the two words do not share common letters. You may assume that each word will contain only lower case letters. If no such two words exist, return 0.

Example 1:

Given ["abcw", "baz", "foo", "bar", "xtfn", "abcdef"]
Return 16
The two words can be "abcw", "xtfn".

Example 2:

Given ["a", "ab", "abc", "d", "cd", "bcd", "abcd"]
Return 4
The two words can be "ab", "cd".

Example 3:

Given ["a", "aa", "aaa", "aaaa"]
Return 0
No such pair of words.

题意:求,不包含相同字符的两个string的最大长度积;

思路:

如何降低判断两string是否包含相同字符的开销???

用bit来表示string元素中a-z每个字符是否出现;

 1 class Solution {
 2 public:
 3     int maxProduct(vector<string>& words) {
 4         int len = words.size();
 5         if(len==0)
 6             return 0;
 7         vector<int> v(len,0);
 8         vector<int> l(len,0);
 9         for(int i=0;i<len;i++)
10         {
11             string tstr = words[i];
12             int tlen = tstr.length();
13             l[i] = tlen;
14             for(int j=0;j<tlen;j++)
15             {
16                 int ttmp = 1<<(tstr[j]-‘a‘);
17                 v[i] |= ttmp;
18             }
19         }
20
21         int ans = 0;
22         for(int i=0;i<len;i++)
23         {
24             for(int j=i+1;j<len;j++)
25             {
26                 int t2 = v[i]&v[j];
27                 if(t2!=0)
28                     continue;
29                 int tmp = l[i]*l[j];
30                 if(tmp>ans)
31                     ans = tmp;
32             }
33         }
34         return ans;
35     }
36 };

时间: 2024-10-05 16:15:50

leetcode 318: Maximum Product of Word Lengths的相关文章

Leetcode 318 Maximum Product of Word Lengths 字符串处理+位运算

先介绍下本题的题意: 在一个字符串组成的数组words中,找出max{Length(words[i]) * Length(words[j]) },其中words[i]和words[j]中没有相同的字母,在这里字符串由小写字母a-z组成的. 对于这道题目我们统计下words[i]的小写字母a-z是否存在,然后枚举words[i]和words[j],找出max{Length(words[i]) * Length(words[j]) }. 小写字母a-z是26位,一般统计是否存在我们要申请一个bool

318. Maximum Product of Word Lengths

题目: Given a string array words, find the maximum value of length(word[i]) * length(word[j]) where the two words do not share common letters. You may assume that each word will contain only lower case letters. If no such two words exist, return 0. Exa

318. Maximum Product of Word Lengths ——本质:英文单词中字符是否出现可以用26bit的整数表示

Given a string array words, find the maximum value of length(word[i]) * length(word[j]) where the two words do not share common letters. You may assume that each word will contain only lower case letters. If no such two words exist, return 0. Example

318. Maximum Product of Word Lengths java solutions

Given a string array words, find the maximum value of length(word[i]) * length(word[j]) where the two words do not share common letters. You may assume that each word will contain only lower case letters. If no such two words exist, return 0. Example

【leetcode】Maximum Product of Word Lengths

Given a string array words, find the maximum value of length(word[i]) * length(word[j]) where the two words do not share common letters. You may assume that each word will contain only lower case letters. If no such two words exist, return 0. Example

318 Maximum Product of Word Lengths 最大单词长度乘积

给定一个字符串数组words,找到length(word[i]) * length(word[j])的最大值,并且两个单词不含公共的字母.你可以认为每个单词只包含小写字母.如果不存在这样的两个单词,返回 0.示例 1:输入 ["abcw", "baz", "foo", "bar", "xtfn", "abcdef"]返回 16两个单词可以为 "abcw", "

Maximum Product of Word Lengths

Maximum Product of Word Lengths Total Accepted: 750 Total Submissions: 2060 Difficulty: Medium Given a string array words, find the maximum value of length(word[i]) * length(word[j]) where the two words do not share common letters. You may assume tha

Maximum Product of Word Lengths -- LeetCode

Given a string array words, find the maximum value of length(word[i]) * length(word[j]) where the two words do not share common letters. You may assume that each word will contain only lower case letters. If no such two words exist, return 0. Example

leetcode笔记:Maximum Product of Word Lengths

一. 题目描述 Given a string array words, find the maximum value of length(word[i]) * length(word[j]) where the two words do not share common letters. You may assume that each word will contain only lower case letters. If no such two words exist, return 0.