字符串替换
3000 ms | 内存限制: 65535
2
编写一个程序实现将字符串中的所有"you"替换成"we"
输入包含多行数据
每行数据是一个字符串,长度不超过1000
数据以EOF结束
输出
对于输入的每一行,输出替换后的字符串
样例输入
you are what you do
样例输出
we are what we do
/*题解:将字符串you替换为'w','e','\n'然后将“\n'剔除。*/
#include<stdio.h>
#include<string.h>
int main()
{
int i,js;
char str[1010];
while(gets(str))
{
js=strlen(str);
for(i=0;i<js-2;i++)
if(str[i]=='y'&&str[i+1]=='o'&&str[i+2]=='u')
{
str[i]='w';
str[i+1]='e';
str[i+2]='\n';
}
for(i=0;i<js;i++)
{
if(str[i]!='y'||str[i+1]!='o'||str[i+2]!='u')
{
if(str[i]=='\n')
continue;
printf("%c",str[i]);
}
}
printf("\n");
}
return 0;
}
优秀代码://s.replace(pos,len,str),s.find(s1);
#include<iostream>
using namespace std;
int main()
{
string s,s1 = "you",s2 = "we";
int flag;
while(cin>>s)
{
flag = s.find(s1);//返回s中找到第一个s1的下标
while(flag!=string::npos)
{
s.replace(flag,3,s2);
flag = s.find(s1,flag+1);
}
cout<<s<<endl;
}
return 0;
}
对replace的test:
#include<iostream>
using namespace std;
int main(){
string s,s1,s2;
s = "aaaaaaaaaa";
s1 = "bbb";
s2 = "cc";
cout<<s.replace(2,3,s1)<<endl;
cout<<s.replace(5,3,s2)<<endl;
} /*
若将cout<<s.replace(6,2,s2)<<endl;
改为cout<<s.replace(6,3,s2)<<endl;结果是aabbbacca
*/
结果是: