c_cpp 将“bbccaaddddddde”转换为“ddddddaabbcce”,按频率和字母顺序转换字符串。使用仿函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 将“bbccaaddddddde”转换为“ddddddaabbcce”,按频率和字母顺序转换字符串。使用仿函数相关的知识,希望对你有一定的参考价值。

class Comp {
public:
    bool operator() (const pair<char, int> &p1, const pair<char, int> &p2) { // cannot forget const
         if(p1.second > p2.second) 
              return true;
         else if(p1.second == p2.second)
              return p1.first < p2.first;
         else 
              return false;
    }
};          // cannot forget “;"

string convert2(const string& s) {  // cannot forget const
     if(s.empty()) return "";
     unordered_map<char, int> mp;
     vector<pair<char, int>> vp;
     for(char c : s) mp[c]++;
     for(auto p : mp) vp.push_back(p);

     //sort(vp.begin(), vp.end(), Comp());
     
     sort(vp.begin(), vp.end(), [](const pair<char, int> &p1, const pair<char, int> &p2) {
        if(p1.second > p2.second) 
              return true;
        else if(p1.second == p2.second)
              return p1.first < p2.first;
        else 
              return false; 
     });
     
     string res;
     for(auto p : vp) {
          for(int i=0; i<p.second; ++i) res += p.first;
     }
     return res;
}

以上是关于c_cpp 将“bbccaaddddddde”转换为“ddddddaabbcce”,按频率和字母顺序转换字符串。使用仿函数的主要内容,如果未能解决你的问题,请参考以下文章

c_cpp 将IP地址转换为整数并将其转换回c

c_cpp 将excel列字符串转换为数字,例如,将“AA”转换为27。

c_cpp 将String转换为Int

c_cpp 将str转换为double

c_cpp 将int转换为字符串

c_cpp 将int转换为字符串