首页 > 试题广场 > 若串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 回复(4)
【答案】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 回复(1)
晕,忘了空串也是串!
发表于 2015-08-17 11:12:41 回复(2)
非空字串的个数为: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)
要注意的是空串也是子串的一个,除非题目说明非空子串

发表于 2015-09-30 10:15:50 回复(0)
等差数列:1+2+3+4+5+6+7+8
得36
加上空串的情况  答案为:37
发表于 2019-05-17 09:02:03 回复(0)
还有一个空串
发表于 2017-08-09 08:54:45 回复(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)
若非特别提示,子串还包括该串本身,以及空串。而其本身和空串 叫做“非平凡子串”,注意题中的提示,是否要除去。
发表于 2015-10-19 22:21:50 回复(0)
选C。
software的子串可以为1个字母到8个字母不等,但字母顺序不变,则子串数量为8+7+6+5+4+3+2+1=36.
所以选C。
发表于 2015-01-07 18:48:53 回复(1)
子串: n(n+1)/2 + 1 非空子串:n(n+1)/2 非空真子串:n(n+1)/2 - 1
编辑于 2019-06-04 23:14:15 回复(0)
没考虑空串
发表于 2019-05-10 19:42:45 回复(0)
非空子串:8+7+6+5+4+3+2+1=36个
空串一个
所以有37个
发表于 2019-02-24 15:06:36 回复(0)
空串
发表于 2019-02-17 22:52:21 回复(0)
还包括了空串
发表于 2018-12-21 22:41:49 回复(0)

子串包括他本身

发表于 2018-10-02 10:09:52 回复(1)
别忘了空串也是该字符串的子串
发表于 2018-08-10 10:46:35 回复(0)