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;
}
原文地址:https://www.cnblogs.com/GetcharZp/p/11768490.html