一、单项选择题
1.答案:C.模式匹配是串的一种重要运算
解析:
-A错误:串是字符的有限序列,不是无限序列。
-B错误:空串是长度为0的串,不包含任何字符(包括空格)。
-C正确:模式匹配是串的核心运算之一,用于查找子串在主串中的位置。
-D错误:串可以采用顺序存储(如数组)或链式存储(如块链结构)。
2.答案:B.数据元素是一个字符
解析:串的特殊性在于其数据元素是单个字符,而普通线性表的数据元素可以是任意类型。
3.答案:B.串中所含字符的个数
解析:串的长度是指串中字符的总数,包括空格和其他符号。
4.答案:C.模式匹配
解析:模式匹配是用于查找子串在主串中首次出现位置的算法,如KMP算法或BF算法。
5.答案:B.11
解析:串s=data的长度为4,子串个数为\(\frac{n(n+1)}{2}+1=\frac{4\times5}{2}+1=11\)(包括空串和所有连续字符组合)。
---
二、填空题
1.答案:空串;字符
解析:
-空串是长度为0的串,不含任何字符。
-串的长度是指串中字符的总数。
2.答案:由空格组成的串;空格的数量
解析:
-空格串是由一个或多个空格组成的串(如)。
-其长度是空格的数量,与空串(长度为0)不同。
3.答案:长度;相同;子;主
解析:
-两个串相等的条件是长度相同且对应字符完全相同。
-子串是串中任意连续字符组成的序列,原串称为主串。
4.答案:3
解析:
-BF算法(暴力匹配)从主串structure的第一个字符开始匹配子串truc。
-首次匹配成功的位置是第3个字符开始(struc中的truc),因此返回3(假设下标从0开始则为2,但通常题目描述为从1开始)。
5.答案:2
解析:
-模式串P=abaabc的next数组计算如下:
-next[0]=-1(通常定义为-1或0,视实现而定)
-next[1]=0
-next[2]=0(ab无公共前后缀)
-next[3]=1(aba的最长公共前后缀为a,长度1)
-next[4]=1(abaa的最长公共前后缀为a)
-next[5]=2(abaab的最长公共前后缀为ab,长度2)
-因此next[5]=2。