1112. 查找子串并替换

问题描述

对输入的一句子实现查找且置换的功能(找到某个子串并换成另一子串)。

比如:将"abcf abdabc"中的"abc",替换为"AA",则替换结果为"AAf abdAA";而将"abcf abdabc"中的"abc"替换为"abcabc",则替换结果为"abcabcf abdabcabc"。

本题查找子串时注意,大小写完全一致,才能作为子串,比如:在"Abcf abd Abc"中,如果找字符串"abc"是不存在的。

输入

第一行为原来的字符串。

第二行为要查找的子串。

第三行为要替换成的子串。(请注意:三个字符串都可能含有空格)

附代码:
(运行结果没问题,但是oj里面判错,有路过的小伙伴望解答一下)

#include<bits/stdc++.h>
using namespace std;
string s,s1,s2,ss,sum;
int main()
{
	getline(cin,s);
	getline(cin,s1);
	getline(cin,s2);
	int a=s.size();
	int b=s1.size();
	int i=0;
	while(i<a+b)
	{
		ss=s.substr(i,b);
		if(ss==s1)
		{
			sum=sum+s2;
		}
		else
		sum=sum+ss;
		i=i+b;	
		ss.clear();
	}
	cout<<sum;
	return 0;
}

  • 13
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是用C语言实现查找子串替换的思路: 1. 首先定义一个函数,用于查找主串中的子串,并返回子串在主串中的位置(如果存在)。 2. 如果子串存在,则定义另外一个函数用于替换操作。这个函数需要接受三个参数:主串、子串替换的字符串。 3. 在这个函数中,我们需要先计算出替换后的字符串的长度,然后申请一个新的字符串空间,将替换后的字符串复制到新的字符串空间中。 4. 然后开始遍历主串,如果发现子串,就将替换后的字符串复制到新的字符串空间中,并将指针移动到替换后的字符串的结尾处。 5. 如果没有发现子串,就将主串当前位置的字符复制到新的字符串空间中,并将指针移动到新的字符串空间中的下一个位置。 6. 最后,将新的字符串空间中的内容复制回原来的主串中,完成替换操作。 下面是一个实现查找子串替换的示例函数: ```c #include <stdio.h> #include <string.h> #include <stdlib.h> int find_substring(char *str, char *sub) { int len1 = strlen(str); int len2 = strlen(sub); int i, j; for(i = 0; i <= len1 - len2; i++) { for(j = 0; j < len2; j++) { if(str[i+j] != sub[j]) break; } if(j == len2) return i; } return -1; } void replace_substring(char *str, char *sub, char *replace) { int len1 = strlen(str); int len2 = strlen(sub); int len3 = strlen(replace); char *new_str = (char *) malloc(len1 * len3 * sizeof(char)); int i = 0, j = 0; while(str[i] != '\0') { if(find_substring(&str[i], sub) == 0) { strcpy(&new_str[j], replace); j += len3; i += len2; } else { new_str[j] = str[i]; i++; j++; } } new_str[j] = '\0'; strcpy(str, new_str); free(new_str); } int main() { char str[100] = "hello world, world is beautiful!"; char sub[10] = "world"; char replace[20] = "universe"; printf("Before replace: %s\n", str); replace_substring(str, sub, replace); printf("After replace: %s\n", str); return 0; } ``` 这个程序先定义了一个 `find_substring()` 函数用于查找子串,如果找到,则返回子串在主串中的位置。然后定义了一个 `replace_substring()` 函数用于替换操作。这个函数先计算出替换后的字符串的长度,然后申请一个新的字符串空间,遍历主串,如果发现子串,则将替换后的字符串复制到新的字符串空间中。最后将新的字符串空间中的内容复制回原来的主串中,完成替换操作。 在 `main()` 函数中,我们定义了一个主串、一个子串和一个替换字符串,然后调用 `replace_substring()` 函数进行替换操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值