31-语言入门-31-字符串替换
描述
编写一个程序实现将字符串中的所有"you"替换成"we"
输入
输入包含多行数据
每行数据是一个字符串,长度不超过1000
数据以EOF结束
输出
对于输入的每一行,输出替换后的字符串
样例输入
you are what you do
样例输出
编写一个程序实现将字符串中的所有"you"替换成"we"
输入
输入包含多行数据
每行数据是一个字符串,长度不超过1000
数据以EOF结束
输出
对于输入的每一行,输出替换后的字符串
样例输入
you are what you do
样例输出
we are what we do
代码:
#include <stdio.h>
//处理数据
static void handlerData(char *arr,int len);
int main()
{
while(1)
{
char inputArr[1000] = {'\0'};
if(gets(inputArr) == NULL)
break;
handlerData(inputArr,100);
puts(inputArr);
}
return 0;
}
//处理数据
static void handlerData(char *arr,int len)
{
if(len < 3)
return;
//you-we
int i = 2;
for(;i < len;++i)
{
if(arr[i-2] == '\0' || arr[i-1] == '\0' || arr[i]=='\0')
break;
if(arr[i-2]=='y' && arr[i-1] == 'o' && arr[i] == 'u')
{
arr[i-2] = 'w';
arr[i-1] = 'e';
int flag = i;
while(flag<len && arr[flag] != '\0' && flag+1<len)
{
arr[flag] = arr[flag+1];
++flag;
}
}
}
}
//处理数据
static void handlerData(char *arr,int len);
int main()
{
while(1)
{
char inputArr[1000] = {'\0'};
if(gets(inputArr) == NULL)
break;
handlerData(inputArr,100);
puts(inputArr);
}
return 0;
}
//处理数据
static void handlerData(char *arr,int len)
{
if(len < 3)
return;
//you-we
int i = 2;
for(;i < len;++i)
{
if(arr[i-2] == '\0' || arr[i-1] == '\0' || arr[i]=='\0')
break;
if(arr[i-2]=='y' && arr[i-1] == 'o' && arr[i] == 'u')
{
arr[i-2] = 'w';
arr[i-1] = 'e';
int flag = i;
while(flag<len && arr[flag] != '\0' && flag+1<len)
{
arr[flag] = arr[flag+1];
++flag;
}
}
}
}
从之前的题目联系中得到的经验是对于边界的判断要考虑,该题目中对索引的代码写法就是考虑了边界的问题。
另外STL可以轻松解决:
#include<algorithm>
#include<iostream>
#include<string>
using namespace std;
int main()
{
string s, s1, s2;
while(getline(cin,s))
{
int flag;
s1 = "you";
s2 = "we";
flag = s.find(s1,0);
while(flag != string::npos)
{
s.replace(flag, 3, s2);
flag = s.find(s1, flag + 1);
}
cout << s << endl;
}
return 0;
}