修改第二次作业-个人项目
[第二次作业链接] https://www.cnblogs.com/031602401chl/p/9615496.html
第一次作业的检测结果都超时了所以改了一下之前的代码。
核心代码
//分割单词 并存入map部分
map<string, int> ma;
for (int y = 0; y < temp.size(); ) {
if (temp[y]<48||((57<temp[y])&&(temp[y]<97))||temp[y]>122)
{
if (y > temp.size())break;
y++;
continue;
}
else {//发现一个单词
while ((temp[y] >= 'a'&&temp[y] <= 'z') || (temp[y] >= '0'&&temp[y] <= '9')) {
word.append(temp, y, 1);
y++;
if (y > temp.size())break;
}
if (Judge(word)) {
ma[word] ++;
}
word.clear();
}
}
//初始化vector ,以及借助PAIR,将map中数据带入vector中,并改写sort的cmp函数部分。
map<string, int> ma;
typedef pair<string, int> PAIR;
bool cmp(PAIR a, PAIR b)
{
if (a.second > b.second)
return true;
if (a.second < b.second)
return false;
if (a.first==b.first)
return true;
return false;
}
vector<PAIR> name_times_vec(ma.begin(), ma.end());
sort(name_times_vec.begin(), name_times_vec.end(), cmp);
对比之前的代码 引入了append函数的使用,map的使用,vector的使用。
引入map的使用,方便了单词的储存以及计数。
再使用sort加快排序速度。
运行结果
能在20s内完成(虽然还是算超时)