问题标题: 酷町堂:3969 字符排序与计数 求思路,不要发完整代码!

0
0
已解决
董宇昊
董宇昊
初级启示者
初级启示者

题目描述 Description

现在有很多个字符,它们排排站。老师需要你统计其中的每个字母的个数,同时将这些字母按照字典序输出。

输入描述 Input Description

输入一个字符串(长度不超过10^6)

输出描述 Output Description

输出排序后的字母,以及每个字母的个数,格式参考样例

样例输入 Sample Input

121abcabcXZYX+++

样例输出 Sample Output

XX2 Y1 Z1 aa2 bb2 cc2

 

谁回答的又快又好!我就采纳谁!

董宇昊在2020-03-18 11:54:08追加了内容

for(int i=1;i<=s.size()-1;i++){
        a[s[i]]++;
    }
    for(int i=1;i<=10000;i++){
        for(int j=1;j<=a[i];j++){
            if(a[i]){
                cout<<(char)i; 
            }
        }
        if(a[i])
        cout<<a[i]<<endl;
    }

以上代码为什么会输出

+++3
11
21
XX2
Y1
Z1
aa2
bb2
cc2

董宇昊在2020-03-18 12:13:21追加了内容

for(int i=1;i<=s.size()-1;i++){
        a[s[i]]++;
    }
    for(int i=1;i<=10000;i++){
        for(int j=1;j<=a[i];j++){
            if(a[i]!=0){
                if(i>=65&&i<=90||i>=97&&i<=122)
                cout<<(char)i; 
            }
        }
        if(a[i]!=0)
        if(i>=65&&i<=90||i>=97&&i<=122)
        cout<<a[i]<<endl;
    }

 

这次编译过了,但依然0分!

@高子健 @张岳恒 ​​​​​​

董宇昊在2020-03-19 14:41:54追加了内容
for(int i=1;i<=s.size()-1;i++){
        a[s[i]]++;
    }
    for(int i=65;i<=90;i++){
        if(a[i]!=0){
            for(int j=1;j<=a[i];j++){
                cout<<(char)i; 
            }
            cout<<a[i]<<endl;
        }
    }
    for(int i=97;i<=122;i++){
        if(a[i]!=0){
            for(int j=1;j<=a[i];j++){
                cout<<(char)i; 
            }
            cout<<a[i]<<endl;
        }
    }

@高子健 你到底过没过?

这样写还是0分,

求大佬找错!

只有一天的时间了,我会加悬赏的!!!

董宇昊在2020-03-19 23:12:46追加了内容

大佬们,能帮帮我找一下错吗?


0
已采纳
高子健
高子健
新手天翼
新手天翼

看在我们是同学的份上我就帮你一把

先输入>>字符串;

定义桶数组;

循环{

桶数组[字符串[??]]++

}

循环(i='...';i<='......';i++)

{

判断(......){

循环{

输出<<" ...   ";//记得强制转换

再输出<<" ..."\\两个要分开输出,否则会输出两次数字

}

判断(......){

循环{

输出<<" ...   ";

 

}

再输出<<" ..."\\两个要分开输出,否则会输出两次数字

}

不能给你代码

否则我又要禁言了

不会再问我

0
董宇昊
董宇昊
初级启示者
初级启示者

@高子健 ,这样连编译都过不了!

 

for(int i=1;i<=s.size()-1;i++){
        a[(int)s[i]]++;
    }
    for(int i=65;i<=90;i++){
        if(a[i]!=0){
            for(int j=1;j<=a[i];j++){
                cout<<(char)i; 
                cout<<a[i]<<endl;
            }
        }
    }
    for(int i=97;i<=122;i++){
        if(a[i]!=0){
            for(int j=1;j<=a[i];j++){
                cout<<(char)i; 
                cout<<a[i]<<endl;
            }
        }
    }

董宇昊在2020-03-19 20:12:34追加了内容

@高子健 ,加我QQ,我们私聊!2259790174

董宇昊在2020-03-20 12:11:52追加了内容

@高子健 ,这个是不是你?

0
0
张岳恒
张岳恒
资深光能
资深光能

输入个字符串,

循环遍历,并放入桶中:a[(强转)字符串【i】]++

双重循环遍历桶数组

判断是否为字母且桶数组不为零

如果是,就输出强转为char的i

再在外循环判断是否为字母且桶数组不为零

是就输出桶数组i并换行 

望采纳

张岳恒在2020-03-18 12:26:56追加了内容

你要判断强转过后的i是不是字母

条件还有a[i]!=0

张岳恒在2020-03-18 12:28:51追加了内容

还有字符串从0遍历

张岳恒在2020-03-18 12:29:41追加了内容

是a[(强转为int)(s[i])]++

张岳恒在2020-03-18 12:48:55追加了内容

a[i]!=0和判断字母放在一个if里   

张岳恒在2020-03-18 12:50:22追加了内容

千万注意:

你要判断强转过后的i是不是字母

张岳恒在2020-03-20 12:23:12追加了内容

从一遍历,还要判断字母!!!

s[i]>='a'&&s[i]<='z'

0
高子健
高子健
新手天翼
新手天翼

 

         for(int i='        ';i<='          ';i++)//判断是不是大写字母
    {
            if      !=0){ 
            循环(){
          输出<<      
           输出<<      
    }

}
    } 

        

         for(int i='        ';i<='          ';i++)//判断是不是小写字母
    {
            if      !=0){ 
            循环(){
          输出<<      
           输出<<      
    }

}
    } 

按照这个格式写

0
高子健
高子健
新手天翼
新手天翼

。。。。。

服了

if(a[i]!=0){

 

for(int j=1;j<=a[i];j++){

cout<<(char)i;

}

cout<<a[i]<<endl;

}

}

改成

if(a[i]!=0){

for(int j=1;j<=a[i];j++){

cout<<(char)i;

cout<<a[i]<<endl;

}

}

}

AC

我要回答