问题标题: 酷町堂:一道让我很蓝瘦的题

0
0
已解决
张恩泽
张恩泽
高级天翼
高级天翼

连续数字求和

题目详情

题目描述 Description

输入一个字符串(仅包含数字字符以及大小写字母),请你对于字符串中连续的数字求和,用和代替原来的数字输出,对于非数字字符,统计非数字字符连续出现的个数,用其个数代替原来的非数字字符输出。输出的数字之和与非数字字符个数之间用空格隔开。
比如,输入1234abc123
对于连续的数字段1234求和得到1+2+3+4=10;
对于连续的非数字字符段abc,求得其个数为3;
再对于连续的数字段123求和得到1+2+3=6。
所以应该输出10 3 6。

输入描述 Input Description

输入一个字符串(仅包含数字字符以及大小写字母)

输出描述 Output Description

如题

样例输入 Sample Input

1234abc123

样例输出 Sample Output

10 3 6

数据范围及提示 Data Size & Hint

字符串不超过10000个字符

这是阶段考试的题,题库里应该搜不到,所以你们就将就着看一下哈

#include<iostream>
#include<string>
using namespace std;
int main()
{
    string s;
    int sum=0;
    int cnt=0;
    cin>>s;
    if(s[s.size()-1]>='0'&&s[s.size()-1]<='9')
    {
        s+="a";
    }
    else if((s[s.size()-1]>='a'&&s[s.size()-1]<='z')||(s[s.size()-1]>='A'&&s[s.size()-1<='Z']))
    {
        s+="1";
    }
    for(int i=0;i<s.size();i++)
    {
        if((s[i]>='a'&&s[i]<='z')||(s[i]>='A'&&s[i]<='Z'))
        {
            cnt++;
            if(sum!=0&&(s[i-1]>='0'&&s[i-1]<='9'))
            {
                cout<<sum<<' ';
            }
            sum=0;
        }
        else if(s[i]>='0'&&s[i]<='9')
        {
            sum+=s[i]-'0';
            if(cnt!=0&&(s[i-1]>='a'&&s[i-1]<='z'||s[i-1]>='A'&&s[i-1]<='Z'))
            {
                cout<<cnt<<' ';
            }
            cnt=0;
        }
    }
    return 0;
}

本人20分代码

但是我怎么试都是对的,提交就WA了,啊!!!

大佬们帮帮忙!!


0
已采纳
被禁言 何冯成
何冯成
中级光能
中级光能
#include<iostream>
using namespace std;
int sum,cnt;
int main(){
    string s;
    getline(cin,s);
    s=s+' ';
    for(int i=0;i<=s.size()-1;i++){
        if(s[i]>='0' && s[i]<='9' ){
            sum+=s[i]-'0';
        }
        if(s[i]>='0'&&s[i]<='9' && s[i+1]<='z'&&s[i+1]>='A' || s[i]>='0'&&s[i]<='9' && s[i+1]==' '){
            cout<<sum<<' ';
            sum=0;
        }
        if(s[i]<='z'&&s[i]>='A'){
            cnt++;
        }
        if(s[i]<='z'&&s[i]>='A' && s[i+1]>='0'&&s[i+1]<='9' ||s[i]<='z'&&s[i]>='A' && s[i+1]==' '){
            cout<<cnt<<' ';
            cnt=0; 
        } 
    }
    return 0;
}

 

0
康曦
康曦
中级光能
中级光能

我爆零了

康曦在2020-07-26 22:38:52追加了内容

不是0是60

0
刘英杰
刘英杰
新手天翼
新手天翼

我们又没有这题的提交界面,做个锤子

0
0
王子健
王子健
初级天翼
初级天翼

阶段测试还问?小心die

0
0
贾志骜
贾志骜
新手光能
新手光能

既然样例对了,那看看数组有没有越界,有没有一些逻辑上的错误,或者一些特殊的样例,错了肯定是有原因的

0
0
赵逸凡
赵逸凡
初级启示者
初级启示者

可以用一个函数记录上次的参数,或者&取址来写

0
张易晨
张易晨
新手光能
新手光能

看输入的字符和上一个的类型是不是一样,一样,累加器更新,不一样,输出累加器,累加器清零

但注意需要再循环结束后再输出一次累加器

我要回答