
 示例1
输入:
["a","b","c","b"],2
返回值:
[["b","2"],["a","1"]]
说明:
"b"出现了2次,记["b","2"],"a"与"c"各出现1次,但是a字典序在c前面,记["a","1"],最后返回[["b","2"],["a","1"]]示例2
输入:
["123","123","231","32"],2
返回值:
[["123","2"],["231","1"]]
说明:
 "123"出现了2次,记["123","2"],"231"与"32"各出现1次,但是"231"字典序在"32"前面,记["231","1"],最后返回[["123","2"],["231","1"]]示例3
输入:
["abcd","abcd","abcd","pwb2","abcd","pwb2","p12"],3
返回值:
[["abcd","4"],["pwb2","2"],["p12","1"]]
code:
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) {
        // write code here
        int i;
        map<string,int>stringMap;
        map<string,int>::iterator it;
        for(i=0;i<strings.size();i++)
        {
            it = stringMap.find(strings[i]);
            if(it != stringMap.end())
            {
                stringMap[strings[i]]=it->second+1;
            }
            else
            {
                stringMap.insert(pair<string,int>(strings[i],1));
            }
        }
        //  sort(stringMap.begin(),stringMap.end(),cmp_by_value);
        vector<vector<string> >res;
        for(it=stringMap.begin();it!=stringMap.end();++it)
        {
            vector<string>temp;
            temp.push_back(it->first);
            temp.push_back(to_string(it->second));
            res.push_back(temp);
        }
        
        for(int j=0;j<res.size()-1;j++)
        {
            bool isswap=false;
            for(int k=0;k<res.size()-1-j;k++)
            {    
                
                if(atoi(res[k][1].c_str())<atoi(res[k+1][1].c_str()))
                {
                    isswap=true;
                    swap(res[k][0],res[k+1][0]);
                    swap(res[k][1],res[k+1][1]);
                    
                }
                if(atoi(res[k][1].c_str())==atoi(res[k+1][1].c_str()))
                {
                    if(res[k][0]>res[k+1][0])
                    {
                        isswap=true;
                        swap(res[k][0],res[k+1][0]);
                        swap(res[k][1],res[k+1][1]);
                    }
                }
            }
            if(isswap==false)
                break;
        }
        res.resize(k);
        return res;
        
        
        
    }
};                
                










