直接上代碼:
bool judge(const pair<int,char> a, const pair<int ,char> b) { return a.first<b.first; } int main() { vector<pair<int ,char>> p; p.push_back(make_pair(10,'a')); p.push_back(make_pair(9,'c')); p.push_back(make_pair(10,'t')); p.push_back(make_pair(17,'y')); p.push_back(make_pair(10,'b')); sort(p.begin(),p.end(),judge); for(auto i=0;i<p.size();i++) cout<<p[i].first<<" "<<p[i].second<<endl; system("pause"); }
通過傳遞一個函數 judge 給sort函數 , 注意: judge 中return a<b; 決定為從小到大的排序
return a>b; 決定為從大到小的排序
華為機試題:
如果統計的個數相同,則按照ASII碼由小到大排序輸出 。如果有其他字符,則對這些字符不用進行統計。
實現以下接口:
輸入一個字符串,對字符中的各個英文字符,數字,空格進行統計(可反復調用)
按照統計個數由多到少輸出統計結果,如果統計的個數相同,則按照ASII碼由小到大排序輸出
清空目前的統計結果,重新統計
調用者會保證:
輸入的字符串以‘\0’結尾。
輸入描述:
輸入一串字符。
輸出描述:
對字符中的
各個英文字符(大小寫分開統計),數字,空格進行統計,並按照統計個數由多到少輸出,如果統計的個數相同,則按照ASII碼由小到大排序輸出 。如果有其他字符,則對這些字符不用進行統計。
輸入例子:
aadddccddc
輸出例子:
dca
#include<iostream> #include<string> #include<vector> #include<algorithm> using namespace std; bool judge(const pair<char ,int> a,const pair<char ,int> b){ if(a.second!=b.second) return a.second>b.second; else return a.first < b.first; } int main() { string c; while(cin >> c){ int len = c.size(); vector<pair<char ,int>> re; for(int i=0;i<len;i++){ int flag=0; int count=1; for(int j=0;j<i;j++){ if(c[i]==c[j]){ flag=1;break;} } if(flag!=1){ for(int j=i+1;j<len;j++){ if(c[i]==c[j]) count++; } re.push_back(make_pair(c[i],count)); } } sort(re.begin(),re.end(),judge); for(int i=0;i<re.size();i++){ cout<<re[i].first; } cout<<endl; } return 0; }