问题标题: 酷町堂:3969

0
0
已解决
徐紫尘
徐紫尘
高级光能
高级光能
#include<iostream>
using namespace std;
int b[122],cnt=0;
int main(){
    string s;
    cin>>s;
    for(int i=0;i<s.size();i++){
        if(s[i]>='A'&&s[i]<='z'){
            b[s[i]]++;
        }
    }
    for(int i=1;i<=122;i++){
        if(b[i]!=0){
            for(int j=1;j<=b[i];j++)
            {
                cout<<char(i);
            }

        cout<<b[i]<<endl;
        }
    }



    return 0;
}

请问哪里错了?


0
已采纳
陈曦
陈曦
资深天翼
资深天翼
  • 题目思路如下:
  • 1、遍历字符串,创建桶数组。
  • 2、留下“非0”并是字母的字符(ASCII码)。
  • 3、输出上一步留下的字符(先从 ASCII 码强制类型转换成字符)。
  •  
  • 特别注意:遍历字符串要从 0 至 n-1。
陈曦在2020-03-21 21:17:30追加了内容

你错在:

   遍历到 s.size()-1

陈曦在2020-03-21 21:18:23追加了内容

多了一个后括号。

陈曦在2020-03-21 21:19:11追加了内容

没多,说错了

陈曦在2020-03-21 22:22:24追加了内容

第8行:"A"-"z"之间还有除字母之外的字符。

建议分开判断:

                “A"-"Z" 65-90

                  "a"-"z"  97-122

0
李素妍
李素妍
新手天翼
新手天翼

1.小朋友,你用string没加头文件:#include<string>

2.小朋友,桶数组要定到130

3.小朋友,第一个循环里的的判断要这样写:if((s[i]>='A'&&s[i]<='Z')||(s[i]>='a'&&s[i]<='z'))

我要回答