【发布时间】:2018-07-04 15:09:56
【问题描述】:
所以我一直在尝试根据字符的频率对字符串进行排序。但是我一直在使用的在线法官向我显示错误Line 17: invalid use of non-static member function 'bool olution::helper(char, char)'
为什么对我的函数的调用是错误的?我以前使用过sort() 函数,但不是字符串。我的helper() 函数不正确吗?
class Solution {
public:
unordered_map<char,int> freq;
bool helper(char c1,char c2){
if(freq[c1]>freq[c2]) return false;
else return true;
}
string frequencySort(string s) {
for(char c:s)
{
freq[c]++;
}
sort(s.begin(),s.end(),helper);
return s;
}
};
【问题讨论】:
-
获取few good C++ books 阅读,从头开始正确学习 C++。然后您还将了解您现在拥有的代码有什么问题。
-
不同的字母可能有相同的频率。也许根据频率做一个普通的
sort(begin, end),然后是一个stable_sort(begin, end, frequency_test)? -
if (a > b) return false; else return true;-->return a <= b;. -
一个Compare 谓词必须返回
false,如果你将一个值与它自己进行比较,你的不会。只需return freq[c1] < freq[c2];
标签: c++ sorting stl stl-algorithm