poj单词替换

                                      **poj 单词替换**

描述

输入一个字符串,以回车结束(字符串长度<=100)。该字符串由若干个单词组成,单词之间用一个空格隔开,所有单词区分大小写。现需要将其中的某个单词替换成另一个单词,并输出替换之后的字符串。

输入

输入包括3行,
第1行是包含多个单词的字符串 s;
第2行是待替换的单词a(长度 <= 100);
第3行是a将被替换的单词b(长度 <= 100).
s, a, b 最前面和最后面都没有空格.

输出

输出只有 1 行,将s中所有单词a替换成b之后的字符串。

#include<stdio.h>
#include<stdlib.h>
int main()
{
	char str[100];
	char s[100][100];
	char replace[100];
	char target[100];
	int curr = 0;
	int flag;
	gets_s(str);
	gets_s(replace);
	gets_s(target);
	int length = strlen(str);
	for (int x = length - 1; x >= 0; x--) {   //将后面需要找出的字符串分离出来
		for (int y = x; y >= 0; y--) {
			if (str[y] == ' ') {
				for (int n = y+1; n <= x; n++) {
					s[curr][n - y-1] = str[n];
				}
				s[curr][x - y] = '\0';
				curr++;
				x = y-1;
			}
			if (y==0) {  //最后一个单词前面没有空格所以要进行特殊处理
				for (int n = y ; n <= x+1; n++) {
					s[curr][n - y ] = str[n];
				}
				s[curr][x - y+1] = '\0';
				curr++;
				x = y - 1;
			}
		}
	}
	int x = 0;
	int max = 0;
	for (int i = 0; i <= curr-1; i++) {         //匹配要替换的单词
		flag = 1;
		x = 0;
		if (strlen(replace) != strlen(s[i]))continue; //长度不一致可以直接跳过
		for (int n = 0; n <= strlen(replace) - 1; n++) {
			if (replace[n] != s[i][n]) {
				flag = 0;
			}
		}
		if (flag) { 
			for ( x= 0; x <= strlen(target) - 1; x++) {
				s[i][x] = target[x];
			}
			s[i][x ] = '\0';
			
		}
	}
	for (int i = curr - 1; i >= 0; i--) {  //进行输出
		if (i == 0) {
			printf("%s", s[i]);
		}
		else {
			printf("%s ", s[i]);
		}
		
	}
	
}

思路很简单。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值