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

子串

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

求出“adereegfbw”子串的数目?

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

字串长度为0: 

  空串 (共1个)

字串长度为1:

  a,d,e,r,e,e,g,f,b,w   (共10个)

字串长度为2:

  ad,de,er,re,ee,eg,gf,fb,bw (共9个)

字串长度为3:

  ade,der,ere,ree,eeg,egf,gfb,fbw (共8个)

字串长度为4:

  ader,dere,eree,reeg,eegf,egfb,gfbw (共7个)

字串长度为5:

  adere,deree,ereeg,reegf,eegfb,egfbw (共6个)

字串长度为6:

  aderee,dereeg,ereegf,reegfb,eegfbw (共5个)

字串长度为7:

  adereeg,dereegf,ereegfb,reegfbw (共4个)

字串长度为8:

  adereegf,dereegfb,ereegfbw (共3个)

字串长度为9:

  adereegfb,dereegfbw (共2个)

字串长度为10:

  adereegfbw (共1个)

因此

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

 

通过观察,可得

  最小字串=空串

  最大字串=其本身

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

 

posted @ 2022-02-23 16:45  景池  阅读(3796)  评论(0)    收藏  举报