如何计算字符串子串个数

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

求出“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代表空串)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值