资深光能
3983 字符串排序2
题目描述 Description
现在有n个字符串(包含空格)需要进行排序,先按照字母的个数从小到大排序,如果字母个数相同,则按照字典序进行排序。
输入描述 Input Description
第一行输入一个整数n(n<=10000)
接下来n行,每行输入一个字符串(不超过300位)
输出描述 Output Description
输出共n行
表示排序后的字符串
样例输入 Sample Input
3
abcdef123
123abcdef
12345abcdef
样例输出 Sample Output
12345abcdef
123abcdef
abcdef123
#include <iostream>
#include<algorithm>
#include<string>
using namespace std;
string a[10010];
int cnt,cnt1;
int zm(string a){
cnt1=0;
for(int i=0;i<a.size();i++){
if((a[i]>='a'&&a[i]<='z')||(a[i]>='A'&&a[i]<='Z'))
cnt1++;
}
return cnt1;
}
bool cmp(string a,string b){
if(zm(a)!=zm(b)){
return zm(a)<zm(b);
}
return a<b;
}
int main(){
int n;
int tmp;
cin>>n;
count(cin,tmp);
for(int i=1;i<=n;i++){
count(cin,a[i]);
}
sort(a+1,a+1+n,cmp);
for(int i=1;i<=n;i++){
cout<<a[i]<<endl;
}
return 0;
}
@胡景波@王子建@大佬们
高级光能