83 最長の回文文字列
トピックリンク
https://leetcode-cn.com/problems/longest-palindrome/
タイトル説明
文字回文配列で最長のを見つけるために、構成された大文字と小文字の文字列下記のものを含む、与えられました。
建設プロセスでは、大文字と小文字を区別しますのでご注意ください。たとえば、 "Aa"
いない回文文字列として。
注:
文字列の長さを超える1010ではないと仮定。
例1:
入力: "abccccdd" 出力: 7 説明: 私たちは、その長さは7で、最も長い文字列が回文「dccaccd」で構築することができます。
重いと難しいです
- charCodeAt()メソッドの戻り指定された文字の位置をコードユニコード。
- 数が回文文字列を構築することも可能である場合、それぞれの文字が表示された回数をカウントします。
トピック分析
- AZ、AZはUnicodeエンコーディングが65(10進数)である - Unicodeコードは122(10進数)であり、58文字の総数、各アレイSNUMの定義を格納するために使用 - Unicodeエンコーディングは90(10進数)であり、Unicodeコードは97(10進数)であります文字の数が表示され、デフォルト、すなわち、SNUMは.fill新しいアレイ(58)(0)=せ、0です。
- UnicodeはcharCodeAt()メソッドを使用してコードする指定された文字、Unicode文字コード文字インデックスの位置を返す-65配列の長さを低減するために、ゼロからカウントを開始することができます。
- 回数を記録し、各文字が表示され(SNUM [value.charCodeAt() - 65] + = 1)。
- 数が偶数である場合トラバーサル時間は、各文字が表示さは、考慮すべき最大長さのパリンドローム文字列を構築することができます。
- 算出長さは、ストリングの元の長さよりも小さい場合、文字列は奇数長、最大長1を加えたパリンドロームなければなりません。
/ ** * @param {文字列}の * @return {数} * / VAR longestPalindrome =関数(S){ SNUM =新しいアレイ(58)を聞かせて.fill(0); {(Sの値を聞かせて)ため 知見[value.charCodeAt() - 65] + = 1; } 0 =最大ましょう。 {(SNUMのNUMを聞かせて)ため MAX + =のparseInt((NUM / 2)、10)* 2。 } リターン最大<s.length?最大+ 1:最大。 }。