美文网首页
leetcode916 单词子集

leetcode916 单词子集

作者: 奥利奥蘸墨水 | 来源:发表于2020-04-07 23:40 被阅读0次

题目

单词子集

分析

根据题意,题目中给出了两个集合A和B,B中的单词为b,B中的每个b都是A中某个a的子集,那么a就叫通用单词。

例子1:a = "abc" B = {"a", "b"},"a"和"b"都是"abc"的子集,那么a是通用单词。
例子2:a = "abc" B = {"aa", "b"},"aa"不是"abc"的子集,那么a不是通用单词。

通过上述例子我们可以发现,a至少要包含B中每个字母出现的最小次数,a才能是通用单词。

所以解法很简单,求一遍B中每个字母出现的最小次数,然后再遍历A中每个单词做判断即可。

代码

class Solution {
private:
    vector<int> get_vec(string& s) {
        vector<int> res(26, 0);
        for (auto & c : s) {
            res[c - 'a']++;
        }
        return res;
    }

    void merge_vec(vector<int>& A, vector<int>& B) {
        for (int i = 0; i < 26; i++) {
            A[i] = (B[i] > A[i]) ? B[i] : A[i]; 
        }
    }

    bool check(vector<int>& A, vector<int>& B) {
        for (int i = 0; i < 26; i++) {
            if (B[i] > A[i]) {
                return false;
            }
        }
        return true;
    }
public:
    vector<string> wordSubsets(vector<string>& A, vector<string>& B) {
        vector<int> num_B(26, 0);
        for (auto & str : B) {
            vector<int> vec(get_vec(str));
            merge_vec(num_B, vec);
        }

        vector<string> res;
        for (auto & str : A) {
            vector<int> vec(get_vec(str));
            if (check(vec, num_B)) {
                res.push_back(str);
            }
        }

        return res;
    }
};

相关文章

  • leetcode916 单词子集

    题目 单词子集 分析 根据题意,题目中给出了两个集合A和B,B中的单词为b,B中的每个b都是A中某个a的子集,那么...

  • 916. 单词子集(Python)

    难度:★★★☆☆类型:字符串方法:统计 题目 力扣链接请移步本题传送门[https://leetcode-cn.c...

  • Python小白 Leetcode刷题历程 No.76-N

    Python小白 Leetcode刷题历程 No.76-No.80 最小覆盖子串、组合、子集、单词搜索...

  • GO Term子集:subset即GO slims的了解

    GO子集指南 关于子集 什么是GO子集? GO子集(也称为GO slims)是GO的缩减版本,包含术语的子集。它们...

  • Subset vs. Subarray vs. Subseque

    subset: 数学上子集的概念 subarray:连续的子集 subsequence:可以不连续的子集 * 子序...

  • 0/1背包问题 0/1 Knapsack

    题目列表 相等子集划分问题 Equal Subset Sum Partition 416. 分割等和子集 子集和问...

  • R语言-列表

    生成列表list函数 取一个子集 取子集的子集 转换为列表及解除列表 列表的转换

  • 子集

    给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。 说明:解集不能包含重复的子集。 示例...

  • 子集

    思路: S={1,2,3}对于一个集合S'={1,2},其子集共有四个{},{1},{2},{1,2}。集合S=S...

  • 子集

    【云游】 渐入星光月, 青衣摇撸樵。 手中关山渡, 兜里乾坤娇。 问道溪芳草, 松江怒水涛。 香封格子信, 花舞玄...

网友评论

      本文标题:leetcode916 单词子集

      本文链接:https://www.haomeiwen.com/subject/rzuaphtx.html