目录
4.串
4.1串的定义和实现
4.2串的模式匹配
部分习题
4.串
4.1串的定义和实现
4.2串的模式匹配
部分习题
1.设有两个串S1和S2,求S2在S1中首次出现的位置的运算称为()
A.求字串 B.判断是否相等 C.模式匹配 D.连接
2.串‘ababaaababaa’的next数组值为()
A.01234567899 B.012121111212
C.011234223456 D.0123012322345
3.串‘ababaaababaa’的next数组为()
A.-1,0,1,2,3,4,5,6,7,8,8,8 B.-1,0,1,0,1,0,0,0,0,1,0,1
C.-1,0,0,1,2,3,1,1,2,3,4,5 D.-1,0,1,2,-1,0,1,2,1,1,2,3
4.串‘ababaaababaa’的nextval数组为()
A.010112010102 B.010114110102
C.010104210104 D.011102110104
5.主串T=‘abaabaabcabaabc’,模式串S=‘abaabc’,采用KMP算法模式匹配,到匹配成功为止,在匹配过程中进行的单个字符间的比较次数是()
A.9 B.10 C.12 D.15
1.C
求字串是从串S中截取第i个字符起长度为l的字串,A错误
2.C
采用手工求next数组的方法,得
序号j | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
串 | a | b | a | b | a | a | a | b | a | b | a | a |
next[j] | 0 | 1 | 1 | 2 | 3 | 4 | 2 | 2 | 3 | 4 | 5 | 6 |
故选C
3.C
next数组整体-1,故选C(在实际KMP算法中,为了简洁,串的位序从1开始,则next数组要整体加1,若位序从0开始,则不加1)
4.C
采用手工求nextval数组方法,得
序号j | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
串 | a | b | a | b | a | a | a | b | a | b | a | a |
nextval[j] | 0 | 1 | 0 | 1 | 0 | 4 | 2 | 1 | 0 | 1 | 0 | 4 |
故选C
5.B
next数组
序号j | 1 | 2 | 3 | 4 | 5 | 6 |
串 | a | b | a | a | b | c |
next[j] | 0 | 1 | 1 | 2 | 2 | 3 |
第一次匹配,连续比较6次,在6号位匹配失败,下一次比较位置为next[3],即从模式串的3号位与主串的6号位比较,第二次匹配4次,匹配成功,因此共匹配10次