牛客网练习记录【字符串】

1,若串S=′software′,其子串的数目是()1/1A 8B 37C 36D 9【答案】B 【解析】 字符串的子串,就是字符串中的某一个连续片段。截取一个字符串长度需要一个起始位置和结束位置。字符串“software”有8个字符,可是设置间隔的位置有9个,使用C(9,2)=36即可求得字符串“software”的所有子串。因为题目标明空串也是子串,故还
摘要由CSDN通过智能技术生成
1, 若串S=′software′,其子串的数目是() 1/1
A 8
B 37
C 36

D 9

【答案】B 

【解析】 字符串的子串,就是字符串中的某一个连续片段。截取一个字符串长度需要一个起始位置和结束位置。字符串“software”有8个字符,可是设置间隔的位置有9个,使用C(9,2)=36即可求得字符串“software”的所有子串。因为题目标明空串也是子串,故还需要加上1,总共37个子串。所以答案选B。 
含有n个不同字符的字符串的非空子串的个数为C(n + 1, 2) = n * (n + 1) / 2  
子串(包括空串)为 n * (n + 1) / 2 + 1  
非空真子子串(不包括空串和跟自己一样的子串)为 n *(n + 1)/ 2 - 1 

2,已知串S=′aaab′,其Next数组值为()

1/1
A 0123
B 1123
C 1231
D 1211
选择A选项。

模式串 a a a b
NEXT数值 0 1 2 3
next数组的求解方法是:第一位的next值为0,第二位的next值为1,后面求解每一位的next值时,根据前一位进行比较。首先将前一位与其next值对应的内容进行比较,如果相等,则该位的next值就是前一位的next值加上1;如果不等,向前继续寻找next值对应的内容来与前一位进行比较,直到找到某个位上内容的next值对应的内容与前一位相等为止,则这个位对应的值加上1即为需求的next值;如果找到第一位都没有找到与前一位相等的内容,那么需求的位上的next值即为1。
对于本题,求next值的过程:
前两位:next数组值前两位一定为01,即aaab中的前两位aa对应01,如上表中next第1,2位为0和1.其实这就可以选出答案了.
第三位:3a前面是2a(2a表示序号为2的a),2a的next数组值为1,将2a和1a相比,两者相同,都是a,则3a的next值为2a的next值加1,即2;
第四位:4b前3a的next为2,3a与2a相比,二者相同,则其next值为2a的next加1,为3.
结果为0123,选A
如果比较的时候碰到与前一位字符“不同”怎么办?那就以前一位的next值为序号,找到这个序号对应的字符,再进行比较,如果与之相同,就用这一位的next值+1,如果不同就继续重复这个操作直到找到相同的字符为止。如果一直重复到第一位还找不到,则将所求位的next值置为1。
3,字符串′ababaabab′的nextval为()
   
   
    
    1/1
   
   
   
   
   
A (0,1,0,1,0,4,1,0,1)
B (0,1,0,1,0,2,1,0,1)
C (0,1,0,1,0,0,0,1,1)
D (0,1,0,1,0,1,0,1,1)
答案:A
解析:
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值