第4章串 作业(参考答案)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第四章串作业

参考答案:

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)S trLength(s)=14

2)S trLength(t)=4

3)S ubString(s,8,7)= ‘STUDENT’

4)S ubSting(t,2,1)= ‘O’

5)I ndex(s,’A’)= 3

6)i ndex(s,t)= 0

7)R eplace(s,’STUDENT’,q)= ‘I AM A WORKER ’

8)C oncat(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(S 4,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<=s.len)

{

j=1;

while(j<=t.len)

{

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<=s.len)。t串用j指针(1<=j<=t.len)。算法思想是对每个i(1<=i<=s.len,即程序中第一个while循环),来求从i开始的连续字符串与从j(1<=j<=t.len,即程序中第二个while循环)开始的连续字符串的最大匹配。程序中第三个(即最内层)的while 循环,是当s中某字符(s[i])与t中某字符(t[j])相等时,求出局部公共子串。若该子串长度大于已求出的最长公共子串(初始为0),则最长公共子串的长度要修改。

程序:

(1) i+k<=s.len && j+k<=t.len && 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}

相关文档
最新文档