给定一个字符串 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);
  
    }
}

最新文章

  1. ASP.NET MVC之Session State性能问题(七)
  2. 周记:Linux下C编程
  3. ubuntu + subversion + apache2 设置
  4. 今年plan,做好四件事情
  5. 8.cadence.CIS[原创]
  6. (转)9个offer,12家公司,35场面试,从微软到谷歌,应届计算机毕业生的2012求职之路
  7. Unity与IOS交互
  8. js json和字符串的互转
  9. 微信小程序的概要
  10. Tomcat配置到JEE版eclipse中
  11. 【python小练】0004
  12. # 20175213 2018-2019-2 《Java程序设计》第1周学习总结
  13. 高性能JavaScript之DOM编程
  14. vux的x-input的源码分析
  15. 调用weka模拟实现 “主动学习“ 算法
  16. mysql中使用正则表达式查询
  17. java String标准格式转换Date(yyyy-MM-dd HH:mm:ss)
  18. oracle锁表问题解决
  19. python爬虫入门(6)-Scrapy基本使用
  20. linux命令(6):tar命令

热门文章

  1. Java目录事件
  2. MS Sql添加描述信息 及其他信息
  3. Spring开发案例1半注解开发
  4. LGV定理 (CodeForces 348 D Turtles)/(牛客暑期多校第一场A Monotonic Matrix)
  5. js排他功能示例
  6. shell 例子
  7. notepad++去换行(简单、快捷)
  8. protobuf3的学习笔记
  9. bootstrapValidator--表单校验
  10. Java中的线程Thread方法之---interrupt()