字符串替换问题
传送门:http://poj.org/problem?id=3981
Description
编写一个C程序实现将字符串中的所有"you"替换成"we"
Input
输入包含多行数据
每行数据是一个字符串,长度不超过1000
数据以EOF结束
Output
对于输入的每一行,输出替换后的字符串
Sample Input
you are what you do
Sample Output
we are what we do
//第一种遇到you直接输出we,其余的原样输出,最容易
//注意头文件为#include<stdio.h>才能用gets;
#include<stdio.h>
#include<iostream>
#include<cstdio>
#include<string>
using namespace std;
int main(){
char str[1005];
while(gets(str)!=NULL){
int i=0;
for(;str[i]!='\0';i++){
if(str[i]=='y'&&str[i+1]=='o'&&str[i+2]=='u'){
printf("we");
i+=2;
}
else
printf("%c",str[i]);
}
printf("\0");
printf("\n");
}
return 0;
}
//第二种,用双指针遍历寻找you,和替换we
#include<iostream>
#include<cstdio>
#include<stdio.h>
using namespace std;
char c[1005];
int main(){
int i,j;//循环变量定义在外面,走一次循环即可
while(gets(c)!=NULL){
for( i=0,j=0;c[i]!='\0';){
if(c[i]=='y'&&c[i+1]=='o'&&c[i+2]=='u'){
c[j++]='w';
c[j++]='e';
i+=3;
}
else
c[j++]=c[i++];}
c[j]='\0';//字符串结束标志。
printf("%s\n",c);
}
return 0;
}
//第三种利用字符串中的函数
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
using namespace std;
int main(){
string str;
int pos;
while(getline(cin,str)){
while((pos=str.find("you"))!=-1)
str.replace(pos,3,"we");
cout<<str<<endl;
}
return 0;
}