美文网首页
PHP取最大回文字符串

PHP取最大回文字符串

作者: 烟雨弥漫了江南 | 来源:发表于2017-08-03 23:59 被阅读0次

取出一个字符串中长度最大的回文字符串

<?php
    function func($str)
    {   
        // 初始化最大回文序列中间坐标
        $maxxy = 0;
        // 初始化最大回文长度
        $maxLength = 0;
        // 初始化一个空数组存储每次的回文序列中间坐标(key)和回文长度(value)
        $arr = [];
        // 通过在每个字符的两边都插入一个特殊的符号,将所有的回文子串都转换成奇数长度;
        // 在字符串的开始和结尾加入另一个特殊字符,这样就不用特殊处理越界问题
        $newStr = "^#" . implode("#", str_split($str)) . "#\0";
        // 递推,每次取一个数作为中间坐标
        for ($i = 2; $newStr[$i] != "\0"; $i++) {
            // 每个中间坐标的初始回文长度为1
            $arr[$i] = 1;
            // 根据每个中间坐标往两头匹配是否相等
            while ($newStr[$i - $arr[$i]] == $newStr[$i + $arr[$i]]) {
                // 每匹配成功一次,则当前坐标的最大回文长度加一
                $arr[$i]++;
            }
            // 判断当前回文长度是否大于最大的回文长度,大于则进去if代码块更新最大回文次数和更新最大回文中间坐标
            if ($arr[$i] > $maxLength) {
                $maxLength = $arr[$i];
                $maxxy = $i;
            }
        }
        // 截取最大回文长度的字符串
        $res = substr($newStr, $maxxy - $maxLength + 1, $maxLength * 2 - 1);
        // 清除开始加入的字符并返回
        return str_replace('#', "", $res);
    }
$str = "abcddcbwewqwqer";
echo func($str);
// 输出 :bcddcb
?>

相关文章

  • PHP取最大回文字符串

    取出一个字符串中长度最大的回文字符串

  • #5 Longest Palindromic Substring

    寻找字符串中最大的回文序列 思想是一个回文字符串的字串也必然是回文序列 于是从左边开始以每一个字母当作回文序列的中...

  • LeetCode 5 (Longest Palindromic

    Longest Palindromic Substring(最大回文字符串) 1、题目描述: Given a st...

  • 算法---寻找最大回文子串

    给定一个字符串,寻找它的最大回文子串

  • 回文字符串的判断及返回最大串

    回文字符串的判断及返回最大串 问题1:怎么获取一个字符串的子串? 问题2:怎么判断一个字符串是回文字符串? 问题1...

  • LeetCode-9 回文数

    题目:9. 回文数 难度:简单 分类:字符串、数学 解决方案:双指针、整数取余 今天我们学习第9题回文数,这是一个...

  • manacher算法

    概念:求字符串的最大回文串1.先处理成偶数串2.回文半径3.回文半径最右边界,并记录最早中心位置 扩展题 给定一个...

  • 求最长回文子串

    题目 有这么一个字符串s,找到s中最长的回文子串,假设s的长度最大值是1000.所谓回文就是中心轴对称的字符串。 ...

  • (一)

    一、题目描述:求一个字符串的最大回文前缀长度。回文是指正反方向读起来都一样的字符串,比如“abcdcba”就是一个...

  • C# 判断字符串是否是回文字符串(单链表)

    回文字符串: ABCDCBA ABCDDCBA 两种都属于回文字符串; 如何判断一个字符串是否是否回文: 使用快慢...

网友评论

      本文标题:PHP取最大回文字符串

      本文链接:https://www.haomeiwen.com/subject/cbumlxtx.html