问题:设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