Manacher算法(马拉车算法)时间复杂度O(n)

用过中心检测法(就是上面说的O(n2) O(n^2)O(n
)的算法)的都知道对于奇数回文串和偶数回文串的处理是不同的,奇数回文串有2n+1 2n+12n+1个字符,所以中心字符一定只有一个。而同理,对于偶数回文串,中心字符有2个。这样1个和2个的情况不好处理,所以我们将给出的串统一转化为奇数回文串。我们将每一个字符的左边和右边都添加一个字符(这个字符是输入中所没有的)。一般都为#。比如说abc和abcd这两个串转化后就为#a#b#c#和#a#b#c#d#。长度分别为7 77和9 99这样无论奇偶都能被转换成奇数回文串了.

其实在我看来,Manacher就是优化后的中心检测法,和KMP算法类似,Manacher的思想也是避免"匹配"失败后的下标回退

下面正式开始分析算法
首先,我们需要了解一个叫做回文半径的东西

https://blog.csdn.net/bestsort/article/details/81637464

============================================================================================
看了很多其他博主的博文,没有把最大回文序列R将清楚,R存在的意义到底是什么?
 
找了别人的代码改了一下查看abaaba的Mancher的运算过程
 String str = "abaaba";

当前循环到i=0
当前元素为=#
当前最大回文半径R=0
当前中心位置flag=0
当前最大半径r=1
=============================
当前循环到i=1
当前元素为=a
当前最大回文半径R=2
当前中心位置flag=1
当前最大半径r=2
=============================
当前循环到i=2
当前元素为=#
当前最大回文半径R=2
当前中心位置flag=2
当前最大半径r=2
=============================
当前循环到i=3
当前元素为=b
当前最大回文半径R=6
当前中心位置flag=3
当前最大半径r=4
=============================
当前循环到i=4
当前元素为=#
当前最大回文半径R=6
当前中心位置flag=3
当前最大半径r=4
=============================
当前循环到i=5
当前元素为=a
当前最大回文半径R=6
当前中心位置flag=5
当前最大半径r=4
=============================
当前循环到i=6
当前元素为=#
当前最大回文半径R=12
当前中心位置flag=6
当前最大半径r=7
=============================
当前循环到i=7
当前元素为=a
当前最大回文半径R=12
当前中心位置flag=6
当前最大半径r=7
=============================
当前循环到i=8
当前元素为=#
当前最大回文半径R=12
当前中心位置flag=6
当前最大半径r=7
=============================
当前循环到i=9
当前元素为=b
当前最大回文半径R=12
当前中心位置flag=9
当前最大半径r=7
=============================
当前循环到i=10
当前元素为=#
当前最大回文半径R=12
当前中心位置flag=9
当前最大半径r=7
=============================
当前循环到i=11
当前元素为=a
当前最大回文半径R=12
当前中心位置flag=11
当前最大半径r=7
=============================
当前循环到i=12
当前元素为=#
当前最大回文半径R=12
当前中心位置flag=12
当前最大半径r=7
=============================
6

JAVA求回文数的更多相关文章

  1. JAVA 基础编程练习题25 【程序 25 求回文数】

    25 [程序 25 求回文数] 题目:一个 5 位数,判断它是不是回文数.即 12321 是回文数,个位与万位相同,十位与千位相同. package cskaoyan; public class cs ...

  2. Java判断回文数算法简单实现

    好久没写java的代码了, 今天闲来无事写段java的代码,算是为新的一年磨磨刀,开个头,算法是Java判断回文数算法简单实现,基本思想是利用字符串对应位置比较,如果所有可能位置都满足要求,则输入的是 ...

  3. c语言求回文数的三种算法的描述

    c语言求回文数的三种算法的描述 题目描述 注意:(这些回文数都没有前导0) 1位的回文数有0,1,2,3,4,5,6,7,8,9 共10个: 2位的回文数有11,22,33,44,55,66,77,8 ...

  4. Java 9.回文数

    给你一个整数 x ,如果 x 是一个回文整数,返回 true :否则,返回 false .回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数.    例如,121 是回文,而 123 不是. ...

  5. java基础——回文数判断

    /** * 题目描述: * 有这样一类数字,他们顺着看和倒着看是相同的数,例如:121,656,2332等,这样的数字就称为:回文数字.编写一个函数,判断某数字是否是回文数字. * 要求实现方法: * ...

  6. java解决回文数

    递归解决palindrome问题 如果String仅仅只是一个或者0个字符,则它就是palindrome 否则比较字符串第一个和最后一个字符 如果第一个和最后一个字符不同,那么就不是palindrom ...

  7. java判断回文数

  8. java例题_25 判断是否为回文数!

    1 /*25 [程序 25 求回文数] 2 题目:一个 5 位数,判断它是不是回文数.即 12321 是回文数,个位与万位相同,十位与千位相同. 3 */ 4 5 /*分析 6 * 先用%和/将5个数 ...

  9. 回文数 第N个回文数

    判断回文数还是不难,如果能转为字符串就更简单了. 如果是求第N个回文数呢. 12321是一个回文数,这里先考虑一半的情况. 回文数的个数其实是有规律的.如: 1位回文数: 9个 2位回文数: 9个 3 ...

随机推荐

  1. 如何将Vue项目部署到Nginx 服务器中

    https://blog.csdn.net/qq_35366269/article/details/91385689

  2. Mac-VScode

    1) 安装 xcode. 打开App Store,搜索xcode,进行下载安装. 2)执行命令: xcode-select --install 3)安装VS Code https://code.vis ...

  3. vue中nextTick的使用

    最近使用vue的vm.$nextTick的用法比较多,现在整理一下它的用法. 推荐阅读:http://www.ruanyifeng.com/blog/2014/10/event-loop.html   ...

  4. [已解决]报错: No module named pip

    cmd中敲命令: python -m ensurepip 更新升级pip命令: python -m pip install --upgrade pip

  5. a number of 和the number of用法

    a number of 和the number of用法 1.   A number of + 複數名詞 + 複數動詞           =some/或a lot of + 複數名詞 + 複數動詞 ...

  6. 关于JDK,tomcat,eclipse的配置

    1.下载安装JDK 在自定义安装路径时,jdk和之后的jre文件夹是属于平行结构,我的安装路径为:D:\jdk\jdk1.6.0_43和D:\jdk\jre6 然后是对环境变量的配置, 计算机→属性→ ...

  7. cordova-plugin-alipay-v2使用篇(更新至20170725)(亲测可用)

    cordova-plugin-alipay-v2使用篇(更新至20170725)(亲测可用) alipaySdk已更新至20170725版本 支付宝WS_APP_PAY_SDK_BASE_2.0 &l ...

  8. 笔记64 Spring Boot快速入门(四)

    SpringBoot中错误处理.端口设置和上下文路径以及配置切换 一.错误处理 假设在访问首页的时候会出现一些错误,然后将这些错误当作异常抛出,反馈给用户. 1.修改IndexController.j ...

  9. 使用Gradle发布项目到JCenter仓库 (转载)

    原文:使用Gradle发布项目到JCenter仓库 这篇文章介绍通过Gradle把开源项目发布到公共仓库JCenter中,方便你我他的事情,我们都是很懒的嘛.JCenter现在是Android Stu ...

  10. MATLAB生成exe脱离matlab运行可执行程序

    https://blog.csdn.net/u013007900/article/details/53485204 侵权即删. ———————————————— 版权声明:本文为CSDN博主「小木匠_ ...