我试着根据词频对字符串进行排序。例如:
- 之前:“tetee”
- 之后:“eeetts”
我选择在algorithm. h中使用sort()和count()函数,如下所示:
#include "bits/stdc++.h"
using namespace std;
string str="tetetafseaaaast";
bool cmp(char a, char b){
return count(str.begin(), str.end(), a)>count(str.begin(), str.end(), b);
}
int main(){
sort(str.begin(), str.end(), cmp);
cout<<str<<endl;
}
然而,结果并不令人满意:“证明”
我的密码怎么了?
1条答案
按热度按时间jv4diomz1#
问题是
std::sort
不能保证当comparator函数被调用时字符串处于一致的状态,所以comparator函数并没有计算原始字符串中相同的字母。下面的代码变体可以正常工作。
这里的区别在于,比较是在原始字符串的副本上进行的,而不是在排序过程中的字符串上进行的。