zoukankan      html  css  js  c++  java
  • 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.

    思路:对每一个元素都进行掩码设置,因为一共就26个字母,所以1个int的bit位就可以代表一个字母,比如"a"就可以表示成0000 0000 0000 0000 0000 0000 0000 0001,"bc"可以表示成0000 0000 0000 0000 0000 0000 0000 0110;如果两个元素的掩码位与以后结果为0,表示他们之间没有相同的字母,则乘积就是两串字符串的长度的乘积。

    代码

    class Solution {
    public:
        int maxProduct(vector<string>& words) {
            vector<int> bitMask(words.size(), 0);
            for( int i = 0; i < words.size(); i++ ){
                for( int j = 0; j < words[i].size(); j++ ){
                    bitMask[i] |= 1<<(words[i][j]-'a');
                }
            }
            int maxProduct = 0;
           for( int i = 0; i < words.size(); i++ ){
               for( int j = i + 1; j < words.size(); j++ ){
                   if( (bitMask[i]&bitMask[j] )== 0){
                   	int len1 = words[i].size();
                   	int len2 = words[j].size();
                    maxProduct = max(maxProduct, (len1*len2));
                   }
               }
           } 
           return maxProduct;
        }
    };
    

      

      

      

  • 相关阅读:
    flash聊天接口文档
    javascript的灵活性
    控件呈现顺序(3)
    javascript弱类型语言
    javascript对象的易变形
    控件生命周期(1)
    看过的最好的js教程
    一个asp.net学习资源
    C#_WinForm捕获未处理的异常
    WebBrowser 加载网页
  • 原文地址:https://www.cnblogs.com/rockwall/p/5775551.html
Copyright © 2011-2022 走看看