第四章 串 作业
参考答案:
1、简述空串和空格串(或称空格符串)的区别
1)空串是指不包括任何字符的串,空格串指包含若干个空格字符的字符串;
2)空串长度为零,空格串长度为所包括的空格字符的个数。
2、设s=‘I AM A STUDENT ’,t=‘GOOD’,q=‘WORKER’.求:
1) StrLength(s)
2) StrLength(t)
3) SubString(s,8,7)
4) SubSting(t,2,1)
5) Index(s,’A’)
6) index(s,t)
7) Replace(s,’STUDENT’,q)
8) Concat(SubString(s,6,2),Concat(t,SubString(s,7,8)))
答:
1) StrLength(s)=14
2) StrLength(t)=4
3) SubString(s,8,7) = ‘STUDENT’
4) SubSting(t,2,1) = O
5) Index(s,’A’)= 3
6) index(s,t) = 0
7) Replace(s,STUDENT,q) = ‘I AM A WORKER ’
8) Concat(SubString(s,6,2),Concat(t,SubString(s,7,8))) = A GOOD STUDENT’
3、若串S1=‘ABCDEFG’, S2=‘9898’ ,S3=‘###’,S4=‘012345’,执行
concat(replace(S1,substr(S1,length(S2),length(S3)),S3),substr(S4,index(S2,‘8’),length(S2)))其结果是多少
答:ABC###G1234 
4、下列算法实现求采用顺序结构存储的串s和串t的一个最长公共子串。请将空格处填上正确的语句。
void  maxcomstr(orderstring *s,*t; int index, length)
{
    int i,j,k,length1,con;
    index=0;length=0;i=1;
    while (i<=
    {
      j=1;
      while(j<=
      {
          if (s[i]= =t[j])
          {
              k=1; length1=1; con=1;
              while(con)
              if   (1)   _ { length1=length1+1;k=k+1; } 
              else   (2) __;
              if (length1>length) { index=i;  length=length1; }
                (3)____
          }
          else   (4) ___;
      }
        (5) __
  } 
}
提示:
算法采用顺序存储结构求串s和串t的最大公共子串。串s用i指针(1<=i<=)。t串用j指针(1<=j<=)。算法思想是对每个i(1<=i<=,即程序中第一个while循环),来求从i开始的连
续字符串与从j(1<=j<=,即程序中第二个while循环)开始的连续字符串的最大匹配。程序中第三个(即最内层)的while循环,是当s中某字符(s[i])与t中某字符(t[j])相等时,求出局部公共子串。若该子串长度大于已求出的最长公共子串(初始为0),则最长公共子串的长度要修改。
程序:
(1) i+k<= && j+k<= && s[i+k]==t[j+k] 
//如果在s和t的长度内,对应字符相等,则指针k 后移(加1)
(2) con=0                                     
//s和t对应字符不等时置标记退出
(3) j+=k                                       
//在t串中,从第j+k字符再与s[i]比较
(4) j++                                       
//t串取下一字符
(5) i++                                       
//s串指针i后移(加1)。
5、(选作)令s=‘aaab’,t=‘abcabaa’,u=‘abcaabbabcabaacbacba’。
  试分别求出它们的next函数值和nextval函数值。
答:
对s=‘aaab’:        next[] = {0, 1, 2, 3}
                    nextval[] = {0, 0, 0, 3}
对t=‘abcabaa’:    next[] = {0, 1, 1, 1,2,3,2}
                    nextval[] = {0,1,1,0,1,3,2}
对s=‘abcaabbabcabaacbacba:
next[] = {0,1,1,1,2,2,3,1,2,3,4,5,3,2,2,1,1,2,1,1}
nextval[] = {0,1,1,0,2,1,3,0,1,1,0,5,3,2,2,1,0,2,1,0}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。