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

    https://leetcode.com/discuss/74580/bit-shorter-c

    判断两个字符串有没有共同的字符(都是小写字母)

    class Solution {
    public: 
        int maxProduct(vector<string>& words) {
            int result = 0;
            if(words.empty()) return result;
            unordered_map<int ,int> maps;
            for(auto word : words){
                int mask = 0;
                for(auto c : word)
                    mask |= 1<<(c-'a');   //这句是精华,用比特位指示出现某个字符
                maps[mask] = max(maps[mask],(int) word.size());         
            }
            for(auto a : maps)
                for(auto b : maps){
                    if(!(a.first & b.first))
                        result = max(result, a.second*b.second);
                }
            return result;
        }
    };
  • 相关阅读:
    字符串练习题
    算法题
    readLine()
    grep家族
    java_IO
    集合框架
    常用类
    异常
    Mysql 图形工具 Navicat
    Mysql内置功能《一》流程控制
  • 原文地址:https://www.cnblogs.com/CarryPotMan/p/5343672.html
Copyright © 2011-2022 走看看