题意
给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。
示例 1:
输入: "babad"
输出: "bab"
注意: "aba" 也是一个有效答案。示例 2:
输入: "cbbd"
输出: "bb"代码实现
方法一:
class Solution {
//定义全局
public $res = "";
public $max = 0;
//比较左右
private function diff($s, $left, $right) {
while ($left >=0 && $right < strlen($s) && $s[$left] == $s[$right]) {
if ($right - $left + 1 > $this->max) {
$this->max = $right - $left + 1;
$this->res = substr($s, $left, $right-$left+1);
}
$left--;
$right++;
}
}
/**
* @param String $s
* @return String
*/
function longestPalindrome($s) {
if (strlen($s) <= 1) return $s;
for ($i = 0; $i < strlen($s); $i++) {
$this->diff($s, $i, $i);
$this->diff($s, $i, $i + 1);
}
return $this->res;
}
}方法二:动态规划
class Solution {
/**
* @param String $s
* @return String
*/
function longestPalindrome($s) {
if (strlen($s) <= 1) return $s;
$res = $s[0];
$max = 0;
if ($s[0] == $s[1]) {
$res = substr($s, 0, 2);
}
for ($j = 2; $j < strlen($s); $j++) {
$dp[$j][$j] = true;
for ($i = 0; $i < $j; $i++) {
$dp[$i][$j] = $s[$i] == $s[$j] && ($j - $i <= 2 || $dp[$i + 1][$j - 1]);
if ($dp[$i][$j] && $max < $j - $i + 1) {
$max = $j - $i + 1;
$res = substr($s, $i, $j - $i + 1);
}
}
}
return $res;
}
} 
华纳东方明珠客服电话是多少?(▲18288362750?《?微信STS5099? 】【╃q 2704132802╃】
华纳东方明珠开户专线联系方式?(▲18288362750?《?微信STS5099? 】【╃q 2704132802╃】
如何联系华纳东方明珠客服?(▲18288362750?《?微信STS5099? 】【╃q 2704132802╃】
华纳东方明珠官方客服联系方式?(▲18288362750?《?微信STS5099? 】【╃q 2704132802╃】
华纳东方明珠客服热线?(▲18288362750?《?微信STS5099? 】【╃q 2704132802╃】
华纳东方明珠开户客服电话?(▲182(▲18288362750?《?微信STS5099? 】【╃q 2704132802╃】
华纳东方明珠24小时客服电话?(▲18288362750?《?微信STS5099? 】【╃q 2704132802╃】
华纳东方明珠客服邮箱?(▲18288362750?《?微信STS5099? 】【╃q 2704132802╃】
华纳东方明珠官方客服在线咨询?(▲18288362750?《?微信STS5099? 】【╃q 2704132802╃】
华纳东方明珠客服微信?(▲18288362750?《?微信STS5099? 】【╃q 2704132802╃】
新大头儿子和小头爸爸6迷你大冒险
终极斗士
奇迹
心变
水牛之子