給定乙個包含大寫字母和小寫字母的字串,找到通過這些字母構造成的最長的回文串。在構造過程中,請注意區分大小寫。比如 「aa」 不能當做乙個回文字串。
注意: 假設字串的長度不會超過 1010。
示例 1
:輸入:
"abccccdd"
輸出:7
解釋:我們可以構造的最長的回文串是"dccaccd"
, 它的長度是 7。
基本思路是回文串中是字元的格式全部為偶數個或只有乙個字元為奇數個,如果給定字串中不存在個數為奇數的字元,只要計算給定的字串中所有字元的和即為目標值,否則則計算偶數和(奇數-1)的和,結果+1
使用map
class
solution
mapmap =
newhashmap()
;for
(char c:s.
tochararray()
)else
}int len =0;
boolean flag =
false
;//是否有奇數
for(
char key:map.
keyset()
)else
}return flag?len+
1:len;
}}
使用固定長度陣列
class
solution
for(
int v:hash)
return lenlength()
?len+
1:len;
}}
Leetcode之 最長回文數
給定乙個包含大寫字母和小寫字母的字串,找到通過這些字母構造成的最長的回文串。在構造過程中,請注意區分大小寫。比如 aa 不能當做乙個回文字串。回文串 對稱的字串 hash,首先統計字串中各個字元的出現次數,若為偶數則可進入回文串,若為奇數,則 1後可以進入回文串。若有奇數出現,則需要最後補乙個1作為...
Leetcode之最長回文子串
給定乙個字串 s,找到 s 中最長的回文子串。你可以假設 s 的最大長度為 1000。示例 1 輸入 babad 輸出 bab 注意 aba 也是乙個有效答案。示例 2 輸入 cbbd 輸出 bb 思路很簡單,首先想到若情況為回文字串奇數個字元時,中間的字元為軸。比較兩邊的字元是否相同。當回文串字元...
LeetCode動態規劃之最長回文子串
給定乙個字串s,找到s中最長的回文子串。你可以假設s的最大長度為 1000。輸入 babad 輸出 bab 注意 aba 也是乙個有效答案。輸入 cbbd 輸出 bb 首先,必須要明確最長回文子串的含義,簡單來說就是 從前往後讀和從後往前讀 是一樣的,按照我們動態規劃解題3步驟 定義陣列元素含義,找...