等级考试2017年秋程序员软考( )

表示“以字符a开头且仅由字符a、b构成的所有字符串”的正规式为【 】。

A、a*b*

B、(a|b)*a

C、a(a|b)*

D、(ab)*

a(a|b)*

正规式a*b*表示的是若干个a后面跟若干个b的字符串;

(ab)*a表示的是以a结尾的所有由a、b构成的字符串;

(ab)*表示b在a之后且a、b 交替出现的字符串;

a(a|b)*表示以字符a开头且仅由字符a b构成的所有字符串。

等级考试2017年春程序员软考( )

设 S 是一个长度为n的非空字符串,其中的字符各不相同,则其互异的非平凡子串(非空且不同于S本身)的个数为【 】。

A、2n-1

B、n2

C、n(n+1)/2

D、(n+2)(n-1)/2

(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。

等级考试2015年秋程序员软考( )

以下关于字符串的叙述中,正确的是【 】

A、字符串属于线性的数据结构

B、长度为0字符串称为空白串

C、串的模式匹配算法用于求出给定串的所有子串

D、两个字符串比较时,较长的串比较短的串大

字符串属于线性的数据结构

选项A是正确的。一个线性表是n个元素的有限序列(n≥0)。由于字符串是由字符构成的序列,因此符合线性表的定义。

选项B是错误的。长度为0字符串称为空串(即不包含字符的串),而空白串是指由空白符号(空格、制表符等)构成的串,其长度不为0。

选项C是错误的。串的模式匹配算法是指在串中查找指定的模式串是否出现及其位置。

选项D是错误的。两个字符串比较时,按照对应字符(编码)的大小关系进行比较。

等级考试2015年春程序员软考( )

已知字符串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’

‘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'

等级考试2014年秋程序员软考( )

设有字符串S= "software",其长度为3的子串数目为【 】。

A、8

B、7

C、6

D、5

6

对于字符串S=“software",其长度为3的子串有“sof"“oft"“ftw"“twa”“war”“are”,共6个。