表示“以字符a开头且仅由字符a、b构成的所有字符串”的正规式为【 】。
A、a*b*
B、(a|b)*a
C、a(a|b)*
D、(ab)*
正规式a*b*表示的是若干个a后面跟若干个b的字符串;
(ab)*a表示的是以a结尾的所有由a、b构成的字符串;
(ab)*表示b在a之后且a、b 交替出现的字符串;
a(a|b)*表示以字符a开头且仅由字符a b构成的所有字符串。
设 S 是一个长度为n的非空字符串,其中的字符各不相同,则其互异的非平凡子串(非空且不同于S本身)的个数为【 】。
A、2n-1
B、n2
C、n(n+1)/2
D、(n+2)(n-1)/2
S 是一个长度为n的非空字符串,其中的字符各不相同,则其长度为1 的子串有n个,长度为 2 的子串有 n-1 个,长度为 3 的子串为 n-2 个,以此类推,长度为 n-1 的子串有2个合计为n+n-1+...+2,即为(n+2)(n-1)/2。
以下关于字符串的叙述中,正确的是【 】
A、字符串属于线性的数据结构
B、长度为0字符串称为空白串
C、串的模式匹配算法用于求出给定串的所有子串
D、两个字符串比较时,较长的串比较短的串大
选项A是正确的。一个线性表是n个元素的有限序列(n≥0)。由于字符串是由字符构成的序列,因此符合线性表的定义。
选项B是错误的。长度为0字符串称为空串(即不包含字符的串),而空白串是指由空白符号(空格、制表符等)构成的串,其长度不为0。
选项C是错误的。串的模式匹配算法是指在串中查找指定的模式串是否出现及其位置。
选项D是错误的。两个字符串比较时,按照对应字符(编码)的大小关系进行比较。
已知字符串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。
A、‘XY+Z*’
B、‘(X+Z)*Y’
C、‘XYZ+*’
D、‘XY+*Z’
t1=SubString(S,3,1)=SubString('(X+Y)*Z',3,1)='+'
t2=Concat('XY',t1)=Concat('XY','+')='XY+'
t3=Replace(s,SubString(s,1,5),t2)=Replace('(X+Y)*Z','(X+Y)','XY+')='XY+*Z'
设有字符串S= "software",其长度为3的子串数目为【 】。
A、8
B、7
C、6
D、5
对于字符串S=“software",其长度为3的子串有“sof"“oft"“ftw"“twa”“war”“are”,共6个。