给你一个字符串 s,找到 s 中最长的回文子串。
| 输入:s = "babad" |
| 输出:"bab" |
| 解释:"aba" 同样是符合题意的答案。 |
| <?php |
| class Solution { |
| |
| |
| |
| |
| function longestPalindrome($s) { |
| $str_len = strlen($s); |
| if ($str_len <= 1) |
| return $s; |
| $start = 0; |
| $offset = 0; |
| for ($i = 0; $i < $str_len; $i ++) { |
| |
| $len1 = $this->centerExpand($s, $str_len, $i, $i); |
| |
| $len2 = $this->centerExpand($s, $str_len, $i, $i + 1); |
| if ($len1 > $len2 && $len1 > $offset) { |
| |
| $start = $i - ($len1 - 1)/2; |
| $offset = $len1; |
| } |
| if ($len1 <= $len2 && $len2 > $offset) { |
| |
| $start = $i - $len2/2 + 1; |
| $offset = $len2; |
| } |
| } |
| return substr($s, $start, $offset); |
| } |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| function centerExpand($str, $len, $left, $right) |
| { |
| while ( $left >= 0 && $right < $len && $str[$left] == $str[$right] ) { |
| $right ++; |
| $left --; |
| } |
| return $right - $left - 1; |
| } |
| } |