leetcodeブラシ日記のタイトル

 

   ここで使用される主な方法は、中心が単一の文字とすることができるので、そのようなABBC二文字と類似していてもよい、彼らにポイントを議論する必要がある、すなわち、文字列全体を横断するように、膨張の中心です。

    単一の文字である場合、n個のケースが存在する場合、二つの文字場合、n-1個のケースがありました。したがって、ケース内で一緒にそれを2N-1であります

    次に、各試験は、次に中心を延長し、最終的に最も長いパリンドローム配列を決定しました。

    約開始の中心の位置を決定し、その後、所望の文字列を取得するために直接SUBSTR関数を減算します。

次のようにコードは次のとおりです。

1  クラスソリューション{
 2  公共3      INT expandAroundCenter(ストリング S、INT左は、int型右)
 4      {
 5          int型 L =左、R = 右。
6          一方、(L> = 0 && R <s.length()&& S [L] == S [R])
 7          {
 8              L-- 9              R ++ 10          }
 11          リターン RL- 1 12      }
 13      
14     文字列 longestPalindrome(ストリングS){
 15          であれば(s.length()< 1 16          {
 17              リターン "" 18          }
 19          int型開始= 0、終了= 0 20          のためにint型 I = 0 ; iが(s.lengthを<)私は++ 21          {
 22              INT LEN1 = expandAroundCenter(S、I、I)。
23              INT LEN2 = expandAroundCenter(S、I、I + 1 )。
24              int型のlen =MAX(LEN1、LEN2)。
25              であれば(LEN>終了- 開始)
 26              {
 27                  START = I - (len- 1)/ 2 28                  端= I +(LEN)/ 2 29              }
 30          } 戻り s.substr(開始、終了-開始+ 1 )。
31      }
 32      
33 }。

最終的な時間計算量はO(N ^ 2)

 

 

    

おすすめ

転載: www.cnblogs.com/xingzhuan/p/11466129.html