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;
        }
    };
    

      

      

      

  • 相关阅读:
    Trapping Rain Water
    Construct Binary Tree from Preorder and Inorder Traversal
    Flatten Binary Tree to Linked List
    Permutations II
    Unique Paths II
    Path Sum II
    Unique Binary Search Trees II
    evdev module-----uinput.py
    evdev module-----events.py
    evdev module-----device.py
  • 原文地址:https://www.cnblogs.com/rockwall/p/5775551.html
Copyright © 2011-2022 走看看