zoukankan      html  css  js  c++  java
  • leetcode@ [318] Maximum Product of Word Lengths (Bit Manipulations)

    https://leetcode.com/problems/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.

    class Solution {
    public:
    
        void strToBits(vector<int>& bits, vector<string>& words) {
            for(int i=0; i<words.size(); ++i) {
                int tmp = 0;
                for(int j=0; j<words[i].size(); ++j) {
                    int offset = words[i][j] - 'a';
                    tmp = (tmp | (1 << offset));
                }
                bits[i] = tmp;
            }
        }
    
        int maxProduct(vector<string>& words) {
            int n = words.size();
            if(n < 2)  return 0;
            
            vector<int> bits(n, 0);
            strToBits(bits, words);
            
            int res = 0;
            for(int i=0; i<n; ++i) {
                for(int j=i+1; j<n; ++j) {
                    int len1 = words[i].length(), len2 = words[j].length();
                    if((bits[i] & bits[j]) == 0) {
                        res = max(res, len1 * len2);
                    }
                }
            }
            
            return res;
        }
    };
  • 相关阅读:
    QT中的列表容器
    QT中的Buttons
    QT中的常用控件
    [机房测试]弟娃
    CF1580C Train Maintenance
    [机房测试]数据恢复
    Sentry 监控
    Sentry 监控
    Sentry 监控
    Sentry 后端监控
  • 原文地址:https://www.cnblogs.com/fu11211129/p/5202593.html
Copyright © 2011-2022 走看看