3016 minimum push to type words II
题目:给你一个字串words,你可以以类似键盘手机分配字母的方式将字母分配到
2-9的按键上,求出以一种最有效率的分配法来去分配字母后的最小输入数
思路:依照字母出现频率由大到小依序分配到按键的第一位分配完八种字母后
再将剩下字母分配到第二位以此类推,写完看到成绩爆烂后想了下字母到底是
啥根本不重要重要是一出现次数去分配就好 唉
class Solution {
public:
int minimumPushes(string word) {
unordered_map<char,int> pre_ans;
for(auto k:word){
pre_ans[k]++;
}
vector<char> bre_ans;
for(auto k:pre_ans){
bre_ans.push_back(k.first);
}
sort(bre_ans.begin(),bre_ans.end(),[&](char a,char b){return
pre_ans[a]>pre_ans[b];});
int ans=0;
for(int i=0;i<bre_ans.size();++i){
ans+=(i/8+1)*pre_ans[bre_ans[i]];
}
return ans;
}
};