子串——求出一个字符串的子串数目
子串
定义:串中任意个连续的字符组成的子序列称为该串的子串
求出“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代表空串)