【スイフト] LeetCode1147。段式回文| 最長チャンク回文分解

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
]➤[マイクロチャンネル公共数:シャンウィングチー( shanqingyongzhi)
➤ブログパークアドレス:サンチンウィングチー(https://www.cnblogs.com/strengthen/
➤GitHubアドレス:https://github.com/strengthen/LeetCode
元のアドレス➤:
アドレスがリンクブログパーク龍シャンカイはない場合➤、それは記事の著者をクロールすることができます。
➤テキストは、更新を変更されました!元のアドレスが読むことを強く推奨クリック!サポート作者!オリジナルをサポートしています!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

可能な限り最大の戻り  k が存在するよう  a_1, a_2, ..., a_k なことを:

  • それぞれの  a_i 非空の文字列です。
  • 彼らの連結は  a_1 + a_2 + ... + a_k に等しいです  text
  • すべてのために  1 <= i <= k、   a_i = a_{k+1 - i}。 

例1:

入力:テキスト= "ghiabcdefhelloadamhelloabcdefghi" 
出力:7 
説明:私たちは、 "(GHI)(ABCDEF)(ハロー)(ADAM)(ハロー)(ABCDEF)(GHI)"で文字列を分割することができます。

例2:

入力:テキスト=「商人」
出力:1つの
説明:私たちは、「(商人)」で文字列を分割することができます。

例3:

入力:テキスト= "antaprezatepzapreanta" 
出力:11 
説明:私たちは、(a)は」上の文字列を分割することができます(NT)(a)の(前)(ZA)(TPE)(ZA)(前)(a)の(NT)( A)」。

例4:

入力:テキスト= "AAA" 
出力:3 
説明:私たちは、上の文字列を分割することができます"(A)(A)(A)"。 

制約:

  • text 小文字のみ、英語の文字で構成されます。
  • 1 <= text.length <= 1000

一般セグメントパリンドロームパリンドロームと同様、実際に、しかし最小単位は文字ではなく、単一の文字であったです。

例えば、平均的な回文「のためのabcba」それは回文で、「volvo」いいえ、私たちは「置けばvolvo」に「vo」、「l」、「vo」三段、それは「考えることができる(vo)(l)(vo)回文セグメントである(ポイント」 3つのセグメント)。 

あなたの文字列を与え  text、それを確保する前提は、セグメントの最大数を戻しなさいステージ回文を満たしています  k

セグメントの最大数の場合は  k、次の条件の存在が満たされています  a_1, a_2, ..., a_k

  • それぞれの  a_i 非空の文字列です。
  • これらの文字列の結果が最初に接続されている  a_1 + a_2 + ... + a_k 文字列と元の  text 同じ。
  • すべてのために1 <= i <= k、そこにあります  a_i = a_{k+1 - i}。 

例1:

入力:テキスト= "ghiabcdefhelloadamhelloabcdefghi" 
出力:7 
説明:我々は、文字列に分割することができます"(GHI)(ABCDEF)(ハロー)(ADAM)(ハロー)(ABCDEF)(GHI)"。

例2:

入力:テキスト=「商人」
出力:1つの
説明:私たちは、文字列に分割することができます「(商人)」。

例3:

入力:テキスト= "antaprezatepzapreanta" 
出力:11 
説明:私たちは、文字列に分割することができます「(A)(NT)( a)の(前)(ZA)(TPE)(ZA)(前)(a)の(NT )(A)」。

例4:

入力:テキスト= "AAA" 
出力:3 
説明:私たちは、文字列に分割することができます"(A)(A)(  A)"。

ヒント:

  • text 英語の小文字のみ。
  • 1 <= text.length <= 1000

おすすめ

転載: www.cnblogs.com/strengthen/p/11297775.html