1160. Find Words That Can Be Formed by Characters 拼写单词 (统计字母数量的常用方法)

Posted ech2o

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1160. Find Words That Can Be Formed by Characters 拼写单词 (统计字母数量的常用方法)相关的知识,希望对你有一定的参考价值。

题目:

技术图片


 思路:

思路很简单,只要分别统计chars中和每个单词中字母出现的个数,chars中的字母大于等于每个单词中的字母的个数,这个单词便是good

可以利用C++中的map实现,现在记录一种更灵活更常用的方式,凡是要统计字母个数,都可以这样处理:

创建一个数组vec[26],每个位置分别存储的是26个字母中对应字母的个数,以 char - a  的方式得到字母的索引

代码:

class Solution {
public:
    vector<int> getV(string strings){
        vector<int> res(26);
        for(char str: strings){
            res[str - a]++;
        }
        return res;
    }
    int countCharacters(vector<string>& words, string chars) {
        vector<int> vec = getV(chars);
        vector<int> cur;
        int res=0;
        for(string word: words){
            cur = getV(word);
            int i;
            for(i=0; i<26; i++){
                if(cur[i] > vec[i]) break;
            }
            if(i == 26) res+=word.size();
        }
        return res;
    }
};

 

以上是关于1160. Find Words That Can Be Formed by Characters 拼写单词 (统计字母数量的常用方法)的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode --- 1160. Find Words That Can Be Formed by Characters 解题报告

Leetcode 1160. Find Words That Can Be Formed by Characters

1160. Find Words That Can Be Formed by Characters 拼写单词 (统计字母数量的常用方法)

You can find the timer(s) that are using too much CPU time using the Developer Tools timeline

leetcode1160

LeetCode 1160. 拼写单词