­

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

  • 2020 年 3 月 17 日
  • 筆記

题目:


 思路:

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

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

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

代码:

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