class Solution {
public:
    /**
     * return topK string
     * @param strings string字符串vector strings
     * @param k int整型 the k
     * @return string字符串vector<vector<>>
     */
    vector<vector<string> > topKstrings(vector<string>& strings, int k) {
        //先用int计数 然后再用to_string把它转换成字符串
        map<string, int> mp;
        vector<vector<string>> res;
        
        for(const auto &i : strings){
            mp[i]++;
        }
        
        for(auto it = mp.begin(); it != mp.end(); it++){
            res.push_back( {it->first,to_string(it->second)} ); // 将int转换成字符串
        }
        
        /*sort(word.begin(),words.end(),
        [](const string &a, const string &b){
        return a.size() < b.size();
    });*/
        sort(res.begin(), res.end(),
             [](vector<string> &m, vector<string> &n){
            //如果是mp[0]=1;mp[1]=1
                 if(m[1] == n[1]){
                     return m[0] < n[0];
                 } else { //mp[1] = '2' mp[2] = '1' 得把'2'变成 2
                     return stoi(m[1]) > stoi(n[1]);
                 }
                 
        });
        
        //重新赋大小 不重新赋大小 会多出["3","1"]
        res.resize(k);
        return res;
    }
};