高级守护
题目链接: 酷町堂:3983
题目描述 De**ion
现在有n个字符串(包含空格)需要进行排序,先按照字母的个数从小到大排序,如果字母个数相同,则按照字典序进行排序。
输入描述 Input De**ion
第一行输入一个整数n(n<=10000)
接下来n行,每行输入一个字符串(不超过300位)
输出描述 Output De**ion
输出共n行
表示排序后的字符串
样例输入 Sample Input
3 abcdef123 123abcdef 12345abcdef
样例输出 Sample Output
12345abcdef 123abcdef abcdef123
代码:
#include<bits/stdc++.h>
using namespace std;
string s[10005];
bool sum(string a,string b){
int cnt=0,cnt1=1;
for(int i=1;i<=a.size();i++){
if(a[i]>='a'&&a[i]<='z'||a[i]>='A'&&a[i]<='Z'){
cnt++;
}
}
for(int i=1;i<=b.size();i++){
if(b[i]>='a'&&b[i]<='z'||b[i]>='A'&&b[i]<='Z'){
cnt1++;
}
}
if(cnt!=cnt1){
return cnt<cnt1;
}else{
return a<b;
}
}
int main(){
int n;
cin>>n;
getline(cin,s[0]);
for(int i=1;i<=n;i++){
getline(cin,s[i]);
}
sort(s+1,s+n+1,sum);
for(int i=1;i<=n;i++){
cout<<s<<endl;
}
return 0;
}
求解