PHP 版 LeetCode 代码实现——5. Longest Palindromic Substring(最长回文子串)
题目描述
给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。
示例 1:
输入: "babad"
输出: "bab"
注意: "aba" 也是一个有效答案。
示例 2:
输入: "cbbd"
输出: "bb"
题解
解法一
class Solution {
/**
* @param $s
* @return string
*/
function longestPalindrome($s) {
$maxLengthQuanJu = 1;
$maxStr = '';
$length = strlen($s);
if($length == 0){
return '';
}else{
for($i=0;$i<$length;$i++){
for($maxLength = $maxLengthQuanJu; $maxLength<=$length;$maxLength++)
{
if($maxLength%2 == 0){
//偶数
$start = $i - ($maxLength/2);
}else{
//奇数
$start = $i - (($maxLength-1)/2);
}
if($start < 0){
break;
}
$end = $start+$maxLength;
if($end>$length){
break;
}
$lsStr = substr($s,$start,$maxLength);
if($lsStr == strrev($lsStr)){
$maxStr = $lsStr;
$maxLengthQuanJu = $maxLength;
}else{
//不符合要求
if($maxLengthQuanJu < ($maxLength-1)){
break;
}else{
continue;
}
}
}
}
}
return $maxStr;
}
}