1、题目
力扣嘉年华将举办一系列展览活动,后勤部将负责为每场展览提供所需要的展台。 已知后勤部得到了一份需求清单,记录了近期展览所需要的展台类型, demand[i][j] 表示第 i 天展览时第 j 个展台的类型。 在满足每一天展台需求的基础上,请返回后勤部需要准备的 最小 展台数量。
注意:
同一展台在不同天中可以重复使用。
示例 1:
输入:demand = [“acd”,“bed”,“accd”]
输出:6
解释: 第 0 天需要展台 a、c、d; 第 1 天需要展台 b、e、d; 第 2 天需要展台 a、c、c、d; 因此,后勤部准备 abccde 的展台,可以满足每天的展览需求;
示例 2:
输入:demand = [“abc”,“ab”,“ac”,“b”]
输出:3
提示:
1 <= demand.length,demand[i].length <= 100
demand[i][j] 仅为小写字母
2、解
实际含义即为:统计每个字符在同一个字符串中出现的最大次数。
int minNumBooths(vector<string> & demand){
//存储出现的每个字符出现的次数
unordered_map<char, int> charTimes;
for(string &d : demand){
//存储每个string中出现字符对应的次数
unordered_map<char, int> cnt;
for(auto s : d) cnt[s] ++;
for(auto it = cnt.begin(); it != cnt.end(); it++){
//更新charTimes字符出现次数对应同一个字符串中出现次数的最大值
charTimes[it->first] = max(charTimes[it->first], it->second);
}
}
int result = 0;
for(auto it = charTimes.begin(); it != charTimes.end(); it++)
result += it->second;
return result;
}