问题标题: 酷町堂:3983

0
0
已解决
胡钰妍
胡钰妍
资深光能
资深光能

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;
}

 

 

@胡景波@王子建@大佬们


0
已采纳
朱家烨
朱家烨
资深守护
资深守护

你首先tmp应该是string类型,还有不要用count把count全改成getline就行了,保你AC我试过了

0
我要回答