PHP之最长回文串
2024-10-07 21:07:12
给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。
示例 1:
输入: "babad"
输出: "bab"
注意: "aba" 也是一个有效答案。
示例 2:
输入: "cbbd"
输出: "bb"
来源:力扣(LeetCode)
能力有限这个是别人写的
class Solution {
/**
* @param String $s
* @return String
*/
function longestPalindrome($s) {
$s_len = strlen($s);
if ($s_len < 1) {
return '';
} elseif ($s_len <= 2) {
return $s{0} == $s{1} ? $s : $s{0};
}
$symbol = '#';
$s_with_symbol = "\$" . $symbol;
for ($i = 0; $i < $s_len; $i ++) {
$sub_s = $s{$i} . $symbol;
$s_with_symbol .= $sub_s;
}
$p = [];
$mx = 0;
$id = 0;
$resLen = 0;
$resCenter = 0;
$s_with_symbol_len = strlen($s_with_symbol);
for ($i = 1; $i < $s_with_symbol_len; $i ++) {
$p[$i] = $mx > $i ? min($p[2 * $id - $i], $mx - $i) : 1;
while ($s_with_symbol{$i + $p[$i]} == $s_with_symbol{$i - $p[$i]}) {
++ $p[$i];
if ($mx < $p[$i] + $i) {
$mx = $p[$i] + $i;
$id = $i;
}
if ($resLen < $p[$i]) {
$resLen = $p[$i];
$resCenter = $i;
}
}
}
return substr($s, ($resCenter - $resLen)/2, $resLen - 1);
}
}
最新文章
- ASP.NET MVC之Session State性能问题(七)
- 周记:Linux下C编程
- ubuntu + subversion + apache2 设置
- 今年plan,做好四件事情
- 8.cadence.CIS[原创]
- (转)9个offer,12家公司,35场面试,从微软到谷歌,应届计算机毕业生的2012求职之路
- Unity与IOS交互
- js json和字符串的互转
- 微信小程序的概要
- Tomcat配置到JEE版eclipse中
- 【python小练】0004
- # 20175213 2018-2019-2 《Java程序设计》第1周学习总结
- 高性能JavaScript之DOM编程
- vux的x-input的源码分析
- 调用weka模拟实现 “主动学习“ 算法
- mysql中使用正则表达式查询
- java String标准格式转换Date(yyyy-MM-dd HH:mm:ss)
- oracle锁表问题解决
- python爬虫入门(6)-Scrapy基本使用
- linux命令(6):tar命令