【算法笔记习题】问题 D: 单词替换(不替换字符串)

思想就是不替换字符串,只需要匹配(查找)字符串,当匹配到后就输出替换的字符串后,原来的继续输出。

简单方法,不涉及字符串的插入与删除,

查找字符串只要 需要查询的那个字符串走到'\0'

#include <cstdio>
#include <iostream>
#include <cstring>
using namespace std;
 
char str[101], a[101],b[100];
	
int main()
{
	
	while(gets(str)){
		gets(a);
		gets(b);
		
		int lena = strlen(a), lenb = strlen(b);//记录长度
		int j,i,k;
		for(int i=0; str[i] != '\0'; i++) 
		{
				//查找有没有此字符串,如果不等就跳出循环,如果等于,当前i就是齐字符串起始位置 
				for(k=i, j=0; a[j]!='\0' ; j++,k++ ) 
				{
					if(a[j] != str[k])
						break;
				}
				//如果有相同的字符串,输出b串 
				if(a[j] =='\0' )
				{
					printf("%s",b);
					i+=lena-1;
				}
				//没有匹配的
				else{
					putchar(str[i]);
				} 
			 
		}
		printf("\n");
		
	}	
	
	
	
 	return 0;
}      
发布了63 篇原创文章 · 获赞 13 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/changreal/article/details/88358054