• 2022-05-31
    编写算法,实现串的基本操作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

    内容

    • 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: 求串长