zoukankan      html  css  js  c++  java
  • PHP之最长回文串

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


        }
    }
  • 相关阅读:
    Android -- BroadCastReceiver的简单使用
    iOS-UITextField 全面解析
    iOS判断对象相等 重写isEqual、isEqualToClass、hash
    iOS开发 之 不要告诉我你真的懂isEqual与hash!
    浅谈 Objective-C 下对象的初始化
    iOS学习之Object-C语言继承和初始化方法
    Objective-c 中如何重写父类的初始化方法
    OC学习篇之---类的初始化方法和点语法的使用
    iOS7实现带文本输入框的UIAlertView及获取TextField文本内容
    UIALertView的基本用法与UIAlertViewDelegate对对话框的事件处理方法
  • 原文地址:https://www.cnblogs.com/corvus/p/11960671.html
Copyright © 2011-2022 走看看