文章

28

粉丝

230

获赞

23

访问

244.0k

头像
字符串暴力匹配,利用str.erase 和 str.insert 来完成替换(替换=删除+插入)
P1196 北京大学上机题
发布于2021年3月13日 22:12
阅读数 7.8k

#include <iostream>
#include <string>

using namespace std;

int main(int argc, char const *argv[])
{
	string str1,str2,str3;
	int i,j,rem,m;
	int Rem[1000]={0};
	while(getline(cin,str1)){
    m=0;
    for(int i;i<1000;i++){
        Rem[i]=0;
    }
	getline(cin,str2);
	getline(cin,str3);
	for (i = 0; i < str1.length(); ++i)
	{
		rem=i;
		for ( j = 0; j < str2.length(); ++j)
		{
			if (str1[i]!=str2[j])
			{
				break;
			}else{
				i++;
			}
		}
		if (j==str2.length())
		{
			Rem[m++]=rem;
		}
		i=rem;
	}
	for(int i = 1 ; i< m ;++i){
        Rem[i]=Rem[i]+1;//注:如果要删除的不是第一个字符,则是按照位序删除,所以需要+1.
	}
	for (int k = 0; k < m; ++k)
	{
		str1.erase(Rem[k],str2.length());
	    str1.insert(Rem[k],str3);
	}
	cout<<str1<<endl;
}
	return 0;
}

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发