子串——求出一个字符串的子串数目


子串

定义:串中任意个连续的字符组成的子序列称为该串的子串

求出adereegfbw”子串的数目?

空串是所有串的字串,所以当字串长度为0时,字串为空串。

字串长度为0: 

  空串 (1)

字串长度为1

  adereegfbw   (10)

字串长度为2

  addeerreeeeggffbbw (9)

字串长度为3

  adedererereeeegegfgfbfbw (8)

字串长度为4

  aderdereereereegeegfegfbgfbw (7)

字串长度为5

  aderedereeereegreegfeegfbegfbw (6)

字串长度为6

  adereedereegereegfreegfbeegfbw (5)

字串长度为7

  adereegdereegfereegfbreegfbw (4)

字串长度为8

  adereegfdereegfbereegfbw (3)

字串长度为9

  adereegfbdereegfbw (2)

字串长度为10

  adereegfbw (1)

因此

  “adereegfbw”含有重复子串的子串数目为1+10+9+8+7+6+5+4+3+2+1=56

通过观察,可得

  最小字串=空串

  最大字串=其本身

  如果一个字串的长度或字符个数为n,那么子串数目=n(n+1)/2+1 (最后1代表空串)