问题标题: 酷町堂:3792 字符串替换

0
0
已解决
胡景波
胡景波
中级光能
中级光能

字符串替换经验值:800

题目描述 Description

给出一个字符串s,其格式类似于"today is _ / _ / _ “。现在给出一个日期,y年m月d日,试将s中的’_'分别替换为日期。比如前面的s结果即为"today is y/m/d”。

输入描述 Input Description

第一行,一个字符串,s,其格式类似于"today is _/_/_"
第二行,一个以空格分隔的日期,y m d

输出描述 Output Description

将s中的’_'分别替换为y, m, d后的结果

样例输入 Sample Input

_/_/_ is your birthday 2015 1 1

样例输出 Sample Output

2015/1/1 is your birthday

数据范围及提示 Data Size & Hint

字符串不会包括多余的’_’

#include<iostream>

#include<cstring>

using namespace std;

string s;

string y,m,d;

int main(){

getline(cin,s);

cin>>y>>m>>d;

string T=m;

    string m="",n="";

for(int i=0;i<s.size();i++){

if(s[i]=='_'){

            int j=i,k=0;

            for(int j=s.size()-1;j>=1;j--){

                if(s[j]=='_'){

                    k=j;

                    break;

                }

            }

            m=s.substr(i,k+1);

            n=s.substr(k+2);

            break;

}

}

for(int i=0;i<m.size();i++){

        if(m[i]=='_'){

            m.erase(i,1);

            m=y+m;

break;

        }

}

for(int i=0;i<m.size();i++){

if(m[i]=='_'){

m.erase(i,1);

m.insert(i,T);

break;

}

}

for(int i=0;i<m.size();i++){

if(m[i]=='_'){

m.erase(i,1);

m.insert(i,d);

}

}

cout<<m<<" "<<n<<endl;

return 0;

}

 


0
已采纳
张易晨
张易晨
新手光能
新手光能

不用这么麻烦,我和你讲下我的思路

首先遍历字符串,如果当前字符是“_”,并且是第一次出现,那就输出年

如果是的二次出现,就输出月

如果是第三次出现,就输出日

否则原样输出

0
0
0
张展嘉
张展嘉
新手天翼
新手天翼

1

张展嘉在2021-03-18 20:07:59追加了内容

getline(cin,a);

cin>>b>>c>>d; f

or(int i=0;i<=a.size()-1;i++){

if(a[i]=='_'){

cnt++;

a=a.erase(i,1);

if(cnt==1){

=a.insert(i,b);

}else if(cnt==2){

a=a.insert(i,c);

}else if(cnt==3){

a=a.insert(i,d);

}

}

}

cout<<a;

注:a,b,c,d,cnt定义在主函数外面

我要回答