求字符串的最长回文子串
2016-03-16 22:30
435 查看
#include <iostream> #include<string> using namespace std; char* change(char *s){//插入特殊符号 int l=strlen(s); int len=l*2+2; char *p=new char[len]; p[0]='$'; p[1]='#'; int j=2; for(int i=0;s[i]!='\0';++i){ p[j++]=s[i]; p[j++]='#'; } return p; } int min(int a, int b){ return b<a?b:a; } void Manacher(char *p){ cout<<p<<endl; int l=strlen(p); cout<<l<<endl; int *result=new int[l]; int i, id, mx=0; for(i=0;i<l;++i){ if(i<mx) result[i]=min(result[2*id-i],mx-i); else result[i]=1; while(p[i-result[i]]==p[i+result[i]]) ++result[i]; if(result[i]>mx){ mx=result[i]; id=i; } } cout<<id<<' '<<mx<<endl; } int main(){ char *p="abbbac"; char *temp=change(p); Manacher(temp); return 0; }参考原文:点击打开链接
相关文章推荐
- mysql 日期处理及格式化
- java如何利用反射机制调用类的私有方法
- 运行第一个Hadoop程序,WordCount
- OCI释放句柄时应注意的问题
- HBase源码分析之Region定位
- iOS开发AssetsLibrary框架访问本地相册
- 模板方法模式
- Python 第五天 模块(2)
- 作业二:四则运算
- [置顶] eclipse android程序运行报错:Conversion to Dalvik format failed: Unable to execute dex:
- js里的事件传播--冒泡
- test/expr的使用
- codeforces 632C C The Smallest String Concatenation(背包)
- 【GUI设计】:实现脚掌压力实时显示功能
- 十一.增加数据修改功能
- SDUT 1400 马的走法(回溯法)
- shell中记录运行时间的一种方法
- FragmentPagerAdapter与FragmentStatePagerAdapter区别
- 运行Eclipse出错:Failed to load the JNI shared library
- 【Mocha.js 101】同步、异步与 Promise