0
点赞
收藏
分享

微信扫一扫

NC97 字符串出现次数的TopK问题(超时未解决)

NC97 字符串出现次数的TopK问题(超时未解决)_开发语言
示例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"]]

NC97 字符串出现次数的TopK问题(超时未解决)_字符串_02

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;



}
};


举报

相关推荐

0 条评论