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相同的子串的算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 联想v3500存储Linux配置手册,O
- 下一篇: c语言fgetpos的参数,C语言fge