第十五周OJ——字符串的修改

时间:2023-01-03 21:44:57


问题描述:一个字符串s、一个字符串t,判断t是否是s的子串,若是则将s中所有出现了t串的地方换成指定的字符或字符串p,若不是,则输出NO
文件名称:_the_fifteenth_week_OJ2290
作者:何知令
发表时间:2016年12月16日
输入:一个字符串s、一个字符串t,要换的字符或字符串
输出:输出修改后的s串

代码:

/*
问题描述:一个字符串s、一个字符串t,判断t是否是s的子串,若是则将s中所有出现了t串的地方换成指定的字符或字符串p,若不是,则输出NO
文件名称:_the_fifteenth_week_OJ2290
作者:何知令
发表时间:2016年12月16日
输入:一个字符串s、一个字符串t,要换的字符或字符串
输出:输出修改后的s串
*/
#include <stdio.h>
int main()
{
char s_str[100],t_str[100],p_str[100];
int i,j,l,len,length;
gets(s_str);
gets(t_str);
gets(p_str);
for(length=0; p_str[length]!='\0'; length++);
for(len=0; t_str[len]!='\0'; len++);
for(l=0; s_str[l]!='\0'; l++);
int failure=1,find=0;
for(i=0; s_str[i]!='\0'; i++)
{
find=0;
for(j=0; j<len; j++)
{
if(s_str[i+j]==t_str[j])
{
find++;
}
}
if(find==len)
{
int k,j=0;
if(length<=len)
{
for(j=0; j<(l-(i+len)+1); j++)
{
s_str[i+length+j]=s_str[i+len+j];
}
}
else
{
for(j=l-i,k=l; j>0&&k>=i; j--,k--)
{
s_str[k+length-len]=s_str[k];
}
}
j=0;
for(k=i; k<=i+find&&j<length; j++,k++)
{
s_str[k]=p_str[j];
}
failure=0;
}
}
if(failure==0)
puts(s_str);
else
printf("NO");
return 0;
}

程序运行结果展示:

第十五周OJ——字符串的修改

第十五周OJ——字符串的修改

知识点总结:字符串插入(最难),循环。

学习心得:搞疯。。。难就难在循环的控制,插入字符对原本字符串的影响,最重要的是OJ上哥的还是错的。。。欲哭无泪