欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

c语言删除s字符串中所有子串t,从串s中删除所有和串t相同的子串的算法

发布时间:2025/3/21 编程问答 29 豆豆
生活随笔 收集整理的这篇文章主要介绍了 c语言删除s字符串中所有子串t,从串s中删除所有和串t相同的子串的算法 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

编写算法,从串s中删除所有和串t相同的子串。

StringType是串的一个抽象数据类型,它包含以下6种基本操作:

void InitStr(StringType &s);

// 初始化s为空串。

void StrAssign(StringType &t, StringType s);

// 将s的值赋给t。s的实际参数是串变量。

int StrCompare(StringType s, StringType t);

// 比较s和t。若s>t,返回值>0;若s=t,返回值=0;若s

int StrLength(StringType s);

// 返回s中的元素个数,即该串的长度。

StringType Concat(StringType &s, StringType t);

// 返回由s和t联接而成的新串。

StringType SubString(StringType s, int start, int len);

// 当1<=start<=StrLength(s)且0<=len<=StrLength(s)- start+1时,

// 返回s中第start个字符起长度为len的子串,否则返回空串。

实现函数如下:

void DelSubString(StringType &scrStr, StringType subStr)

/* Remove all substring matching 'subStr' from 'scrStr'. */

{

int n,m,i;

StringType sub;

InitStr(sub);

n = StrLength(scrStr);

m = StrLength(subStr);

i = 1;

while(i <= n){

StrAssign(sub,SubString(scrStr,i,m));//将串C中的子串逐个提取出来与串T进行匹配

if(StrCompare(sub,subStr) == 0){//匹配相等时

InitStr(sub);

Concat(sub,SubString(scrStr,1,i-1));//将匹配相等的子串的前面的子串连接到串sub后

Concat(sub,SubString(scrStr,m+i,n-(m+i)+1));//将匹配相等的子串的后面的子串连接到串sub后

StrAssign(scrStr,sub);

n = StrLength(scrStr);//操作完一次之后,串scrStr已经改变,需要注意

}

else{

++i;

}

}

}

总结

以上是生活随笔为你收集整理的c语言删除s字符串中所有子串t,从串s中删除所有和串t相同的子串的算法的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。