2016-12-29 14 views
-1

假設我有string str = "aabaa"如何獲取非重複子串的總數?

其非重複子是

  1. 一個
  2. b
  3. AA
  4. AB
  5. BA
  6. AAB
  7. ABA
  8. BAA
  9. AABA
  10. ABAA
  11. aabaa
+0

這似乎是一門功課的問題。你有沒有試圖自己做?你被困在某個特定的部分嗎?否則,我已經完成了我的編碼練習。 – kbunarjo

+0

其實這個問題是在hackerrank的比賽中提出的。第一個和formost我不能寫代碼打印子字符串..所以請告訴我如何打印子字符串 –

+1

你不能接受任何子字符串?使用這個http://www.cplusplus.com/reference/string/string/substr/ – Pavel

回答

3
  1. 計算suffix array與最長公共前綴陣列體。

    a 
    1 
    aa 
    2 
    aabaa 
    1 
    abaa 
    0 
    baa 
    
  2. 返回(n+1)n/2,子串的邊界的數目,減去最長公共前綴陣列的總和。

    (5+1)5/2 - (1+2+1+0) = 15 - 4 = 11. 
    
+0

謝謝@David Eisenstat –