求字符串中互异的非平凡子串


问题:设S是一个长度为n的字符串,其中字符各不相同,则S中的互异非平凡子串(非空且不同于本身)有多少个?

解析:使用归纳法

如S字符串为”abcdefg”,长度为7。则S中的包含的互不相同的字串如下:

1.长度为6的个数为2:”abcdef”和”bcdefg”

2.长度为5的个数为3:”abcde”,”bcdef”,”cdefg”

......

6.长度为1的个数为7:”a”,”b”,”c”,”d”,”e”,”f”,”g”,

其个数总和就是2+3+4+5+6+7 = (1+2+3+..+7) – 1 = 7x(7+1)/2 – 1(减1是减去原字符串自身).

可得扩展,其中:
1+2+3+…+n = (1+n) + (2+(n-1)) + (3+(n-2)) + …(首尾两项相加的和都是n+1,共 n/2个)
= n(n+1)/2

注:上面的公式还需要减1,因为只需要从2累加到n,字符串本身不算。

故答案为:  n(n+1)/2-1

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM