求解字符串所包含子串的個數


1、子串:串中任意個連續的字符組成的子序列稱為該串的子串(連續、連續、連續!重要的事情說三遍)

  • 備注:空串屬於子串

2、串中字符均不相同:n個字符構成的字符串,假設每個字符都不一樣,問有多少個子串

 

  • 答案:n(n+1)/2+1
  • 友情提示:每個字符均不相同
  • 解析:
  • 包含1個字符的子串共n個
  • 包含2個字符的子串共n-1個
  • 包含3個字符的子串共n-2個
  • 包含4個字符的子串共n-3個
  • .。。。。。
  • 包含n個字符的子串共1個
  • 空串1個
  • 綜上所述:子串個數共:1+2+3+。。。+n+1(空串)=n(n+1)/2+1
  • 實例應用:若串S=′software′,其子串的數目是()

 

    • 解析:n(n+1)/2+1=8(8+1)/2+1=37

3、串中字符出現重復:字符串www.qq.com所有非空子串(兩個子串如果內容相同則只算一個)個數是()

 

  • 答案:50
  • 備注:存在相同字符,所以計算方法為總個數減去重復個數,即n(n+1)/2+1-重復個數
  • 解析:包含重復子串共:n(n+1)/2+1=10(10+1)/2+1=55,減去重復:2個w,1個ww,1個q,1個.,所以共55-5=50個


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM