一、題目
難度:簡單
語言: PHP
題目內容:
給定一個包含大寫字母和小寫字母的字串,找到通過這些字母構造成的最長的迴文串。
在構造過程中,請注意區分大小寫。比如 “Aa” 不能當做一個迴文字串。
注意:
假設字串的長度不會超過 1010。
示例 1:
輸入:
“abccccdd”
輸出:
7
解釋:
我們可以構造的最長的迴文串是”dccaccd”, 它的長度是 7。二、解題
LeetCode給定函式體
class Solution { /** * @param String $s * @return Integer */ function longestPalindrome($s) { } }
- 解題
思路:計算每個字母出現次數,將奇數減一,使之變為0或偶數,再將次數相加,若迴文數長度為偶數且上個迴圈中有減1,則可加到迴文數中間。
class Solution {
/**
* @param String $s
* @return Integer
*/
function longestPalindrome($s) {
$arr = str_split($s);
$value = array_count_values($arr);
$length = 0;
$reduct = 0;
foreach ($value as $k => $item) {
if ($value[$k] % 2 !== 0) {
$value[$k] -= 1;
$reduct++;
}
$length += $value[$k];
}
if ($reduct > 0 && $length % 2 === 0) {
$length += 1;
}
return $length;
}
}
提交結果:
宣告
部落格文章皆為本人碼字原創,在文章創作過程中借鑑了其他學者論文、專著及其他文獻等,本人皆會在參考文獻中註明,如若侵犯您版權,請聯絡本人刪除。轉載本內容需註明出處!
本作品採用《CC 協議》,轉載必須註明作者和本文連結