编写算法,实现串的基本操作Replace(&S,T,V)。
解 算法如下:bool repl (SString &NewS, SString S, SString T, SString V ){ //以串V置换串S中所有和T相同的子串后构成一个新串NewS。 //若因置换引起数组越界,则返回FALSE,否则返回TRUE。 m=S[0]; n=T[0]; overflow=FALSE; i=k=1; l=0; //i指示串S中当前待进行置换的剩余串的起始位置, //l指示串NewS的当前长度。 while (!overflow && m-k+1>=n ) { j=1; while (j <= n &&S[k+j-1] = = T[j]) j++; if (j <= n) k++; else //匹配成功 if (l+k-i+V[0]>MAXSTRLEN ) overflow = TRUE; else { copy (NewS, S, l+1, i, k-i); copy (NewS, V, l+k-i,1,V[0]); i=k+n; k=i; l=l+k-i+V[0]; } } if (!overflow && i <=m &&&+(m-i+1)<=MAXSTRLEN) copy (NewS, S,l+1, i,m-i+1); else overflow = TRUE; return (! overflow);} //repl
举一反三
- 编写算法,实现串的基本操作StrCompare(S,T)。
- 写算法,实现顺序串的基本操作StrReplace(&s,t,v)。
- 编写算法,实现串的基本操作StrAssign(&T,chars)。
- 编写算法,实现串的基本操作 StringAssign ( &T,chars).
- 字符串的替换操作replace (String &s, String &t, String &v)是指:若t是s的子串,则用串v替换串t在串s中的所有出现;若t不是s的子串,则串s不变。例如,若串s为"aa bbabcbaabaaacbab"串t为"bab”,串v为*abde",则执行replace 操作后,串s中的结果为"aababdccbaabaaacabde"。试利用字符串的基本运算实现这个替换操作。[br][/br]
内容
- 0
编写算法,从串s 中删除所有和串 t相同的子串
- 1
4章--已知字符串s=“(x+y)*z”,其中,双引号不是字符串的内容,经过以下运算后,t3的值是()。t1=SubString(s,3,1)t2=Concat('XY',t1)t3=Replace(s,SubString(s,1,5),t2)注:SubString(s,k,n)表示从串s的第k个字符开始取出长度为n的子串,Concat(s,t)表示将串t连接在s之后,Replace(s,t,r)表示用r替换串s中的子串t。
- 2
设有两个串T和S,其中T是S的子串,则求T在S中首次出现位置的算法称为()。
- 3
设有两个串S和T,其中T是S的子串,求T在S中首次出现的位置的算法称为( )。 A: 模式匹配 B: 串链接 C: 串比较 D: 求子串
- 4
设有两个字符串s和t,判断t是否为s子串的算法称为()。 A: 求子串 B: 求子串 C: 串匹配 D: 求串长