amcode
amcode
发布于 3个月前

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;
    }
}

>>> PHP 版 LeetCode 代码实现——总目录