首页 > 试题广场 >

若串 S="software",则其子串的数目是()

[单选题]
若串 S="software",则其子串的数目是()
  • 8
  • 37
  • 36
  • 9
字串: n(n+1)/2 + 1
非空子串:n(n+1)/2
非空真子串:n(n+1)/2 - 1
发表于 2015-09-06 15:55:13 回复(8)
【答案】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
编辑于 2016-10-06 10:30:57 回复(5)
晕,忘了空串也是串!
发表于 2015-08-17 11:12:41 回复(4)
非空字串的个数为:n(n+1)/2
所以最后应该再加1,即37
发表于 2015-09-01 16:43:33 回复(0)
串中任意个连续的字符组成的子序列称为该串的子串
ab的子串:a、b、ab和一个空子串共4个即(2+1+1)个,abc的子串:a、 b、 c、 ab、 bc 、abc和一个空子串 共(3+2+1+1)个, 所以若字符串的长度为n,则子串的个数就是[n+(n-1)+.......+1+1]个,"software"中 非空子串 的个数就是8+7+....+1=36个。
发表于 2015-09-10 16:40:26 回复(0)
8+7+6+5+4+3+2+1。再加一空串
发表于 2015-08-14 23:36:44 回复(0)
选C。
software的子串可以为1个字母到8个字母不等,但字母顺序不变,则子串数量为8+7+6+5+4+3+2+1=36.
所以选C。
发表于 2015-01-07 18:48:53 回复(1)
算漏了空串的有吗?😓
发表于 2022-01-16 09:10:59 回复(2)

空串是任意字符串的字串

发表于 2015-08-02 19:55:12 回复(0)
n(n+1) / 2
应该包含空串 空串是任意的字串 37
编辑于 2015-05-08 14:15:47 回复(0)
若非特别提示,子串还包括该串本身,以及空串。而其本身和空串 叫做“非平凡子串”,注意题中的提示,是否要除去。
发表于 2015-10-19 22:21:50 回复(0)
之前说子串个数为n(n+1)/2,现在怎么又要加1了。。。。
发表于 2015-07-06 15:04:04 回复(1)
要注意的是空串也是子串的一个,除非题目说明非空子串

发表于 2015-09-30 10:15:50 回复(0)
总结一下计算公式:

子串: n(n+1)/2 + 1
非空子串:n(n+1)/2
非空真子串:n(n+1)/2 - 1
发表于 2020-06-05 11:58:39 回复(0)
从1+2+~~~+8=8(8+1)/2再加空串
发表于 2016-07-06 21:28:37 回复(0)
子串数公式:(n+1)*n/2 + 1
加的1是空串
发表于 2016-05-29 21:08:26 回复(0)
长1的子串——8个
长2的字串——两两一组,8-1=7
长3的子串——三三一组,8-2=6
.....
长8的字串——8-7= 1
空串1个
一个(8+1)*8/2+1=37
发表于 2022-06-07 09:27:35 回复(0)
等差数列:1+2+3+4+5+6+7+8
得36
加上空串的情况  答案为:37
发表于 2019-05-17 09:02:03 回复(0)
非空子串:8+7+6+5+4+3+2+1=36个
空串一个
所以有37个
发表于 2019-02-24 15:06:36 回复(0)
还有一个空串
发表于 2017-08-09 08:54:45 回复(0)