LeetCode 5. 最长回文子串
LeetCode 5. 最长回文子串
给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。
示例 1:
输入: "babad"
输出: "bab"
注意: "aba" 也是一个有效答案。
示例 2:
输入: "cbbd"
输出: "bb"
知识点:
- substr(); // 求子串
- 回文数的个数分,”奇数个“、”偶数个“分别处理
function longestPalindrome($s) { $ans = $s[0]; $ans_num = 1; for ($i = 1; $i < strlen($s); ++ $i) { // 回文数个数为奇数个 $temp = 1; for ($j = $i - 1, $k = $i + 1; $j >= 0 and $k < strlen($s); -- $j, ++ $k) { if ($s[$j] == $s[$k]) { $temp += 2; } else { break; } } if ($temp > $ans_num) { $ans = substr($s, $j + 1, $temp); $ans_num = $temp; } // 回文数个数为偶数个 $temp = 0; for ($j = $i - 1, $k = $i; $j >= 0 and $k < strlen($s); -- $j, ++ $k) { if ($s[$j] == $s[$k]) { $temp += 2; } else { break; } } if ($temp > $ans_num) { $ans = substr($s, $j + 1, $temp); $ans_num = $temp; } } return $ans; }