問題:設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