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


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