中级光能
字符串替换经验值: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;
}
新手光能
不用这么麻烦,我和你讲下我的思路
首先遍历字符串,如果当前字符是“_”,并且是第一次出现,那就输出年
如果是的二次出现,就输出月
如果是第三次出现,就输出日
否则原样输出