leetcode。回文配列-Java最長の文字列0.409

1.特定のトピック

文字回文配列で最長のを見つけるために、構成された大文字と小文字の文字列下記のものを含む、与えられました。建設プロセスでは、大文字と小文字を区別しますのでご注意ください。以下のような「Aaが」回文文字列として使用することはできません。

注:文字列の長さを超える1010ではないと仮定。

例1:入力: "abccccdd"出力:  7

説明:私たちは最も長い文字列を作成することができますが回文「dccaccd」、その長さは7です。

アイデアの2.分析

中間パリンドローム配列は対称軸であり、それは中心元素を有することが望ましい、残りの要素の偶数です。

文字の各列の統計数が最初に考え、決定パリティ後、中心元素限り、残りの偶数要素を保持していました。しかし、実際には、奇数の要素のために、それは結果を追加し、でも要素マイナス1になることができます。

3.コード

1  公共 INT longestPalindrome(文字列S){
 2          INT [] = L 新しい新しい INT [26である]; //小文字のそれぞれの数を記録する
 。3          INT [] B = 新しい新しい INT [26である]; //主要書き込まれた文字の数を記録
 4          INT ; I <s.length(); I = 0 I ++ ){
 5。             INTのdiff = s.charAt(I) - 'A' ;
 6              IF(差分<26である){
 7                  。B [差分] + = 1 ; 
 8              } {
 9。                  デフ= s.charAt(I) - 'A' ;
10                  。L [差分] + = 1 ; 
 11              }
 12である         }
 13が         INT結果= 0 ;
 14          のためにINT NUM:L){
 15              結果= NUM + / 2 * 2 ; //すべての偶数要素と奇数要素ターンを保ちます偶数
 16              IF ++(NUM = 2%0%2 == 0 &&結果!)結果中心元素予約//;
 17。         }
 18である         ためINT NUM:B){
 19              の検索結果= NUM + / 2 * 2 20              IF(NUM = 2%0%2 == 0 &&結果!)結果++ ;
 21のIS         }
 22          リターン結果。
23      }

 

おすすめ

転載: www.cnblogs.com/XRH2019/p/11843277.html