问题标题: 酷町堂:3983 字符串排序2

0
0
张逸凡
张逸凡
高级守护
高级守护

题目链接: 酷町堂: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;

}

求解


1
我要回答