2016-12-29 11 views
-1

私はstring str = "aabaa"非反復部分文字列の総数を取得するにはどうすればよいですか?

その非反復部分文字列が

  1. B
  2. AA
  3. AB
  4. BA
  5. AAB
  6. ABA
  7. あると仮定しています
  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 –

1

この特定の問題は、多くのコンテストに頼まれ、さまざまな方法で解決することができるが、それはコンテストに受け入れられて得るためには、時間と空間の複雑さの問題です。 あなたは以下のリンクで解決策を見つけることができます: Generate all unique substrings for given string

https://www.quora.com/Given-a-string-how-do-I-find-the-number-of-distinct-substrings-of-the-string

+0

ありがとうございました。私は論理を持っています。 –

関連する問題