当前位置: 首页 > news >正文

HDU3068(最长回文串)

回文串

杭电3068 最长回文串(manachar):

题目:

 

给出一个只由小写英文字符a,b,c...y,z组成的字符串S,求S中最长回文串的长度.
回文就是正反读都是一样的字符串,如aba, abba等

 

#include<iostream>

#include<string.h>

using namespace std;

 

const int maxn = 110000 + 10;

 

char a[maxn];

int p[maxn * 2];

 

int Min(int a, int b){

    return a > b ? b : a;

}

 

int main(){

    int i, n, id, maxl, maxid;

    while(scanf("%s",a) != EOF){

        char b[maxn * 2];

        maxl = 0;

        maxid = 0;

        id = 0;

        int j = 2;

        for(i=0; a[i] != '\0'; i++){                 //插入#号,解决奇偶性问题

            b[j++] =  a[i];

            b[j++] =  '#';

        }

        b[0] = '@';                       //防止越界

        b[1] = '#';                     

        n = strlen(a) * 2 + 1;

        for(i=1; i<n; i++){

            if(maxid > i){     //处理重复,核心(优化是时间),为什么选最少的原因看上图

               p[i] = Min(p[2 * id -i],maxid - i);

            }

            else{

                 p[i] = 1;

            }

            while(b[i + p[i]] == b[i - p[i]]){            //向两边扩充,找到最大回文

                p[i]++;

            }

            if(p[i] + i > maxid){

               maxid = p[i] + i;

               id = i;

            }

            if(p[i] > maxl){

               maxl = p[i];

            }

        }

        printf("%d\n",maxl - 1);

    }

    return 0;

}

 

转载于:https://www.cnblogs.com/cbyniypeu/p/3379611.html

相关文章:

  • redis初识
  • 头指针与头结点的异同
  • Npoi将excel数据导入到sqlserver数据库
  • OpenStack导入镜像后Launch不起来的几个问题
  • zookeeper 面试题 有用
  • 如何写PHP规范注释
  • /proc/stat文件详解(翻译)
  • Android性能:通过Choreographer检测UI丢帧和卡顿
  • java提高篇(五)-----使用序列化实现对象的拷贝
  • java小心机(3)| 浅析finalize()
  • Adapter Class Cast Exception Removing Footer View from ListView
  • LeetCode--014--最长公共前缀
  • 串口超时处理原理及实现
  • ACM北大暑期课培训第一天
  • Delphi窗体创建释放过程及单元文件小结(转)
  • 【React系列】如何构建React应用程序
  • Babel配置的不完全指南
  • Effective Java 笔记(一)
  • hadoop入门学习教程--DKHadoop完整安装步骤
  • Javascript弹出层-初探
  • JS+CSS实现数字滚动
  • Lsb图片隐写
  • Spring-boot 启动时碰到的错误
  • tensorflow学习笔记3——MNIST应用篇
  • unity如何实现一个固定宽度的orthagraphic相机
  • vagrant 添加本地 box 安装 laravel homestead
  • webgl (原生)基础入门指南【一】
  • 如何优雅地使用 Sublime Text
  • hi-nginx-1.3.4编译安装
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • ​【原创】基于SSM的酒店预约管理系统(酒店管理系统毕业设计)
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • #预处理和函数的对比以及条件编译
  • (03)光刻——半导体电路的绘制
  • (6)STL算法之转换
  • (Arcgis)Python编程批量将HDF5文件转换为TIFF格式并应用地理转换和投影信息
  • (MIT博士)林达华老师-概率模型与计算机视觉”
  • (Redis使用系列) Springboot 使用redis的List数据结构实现简单的排队功能场景 九
  • (十一)JAVA springboot ssm b2b2c多用户商城系统源码:服务网关Zuul高级篇
  • (四)c52学习之旅-流水LED灯
  • (转)【Hibernate总结系列】使用举例
  • (转)大型网站的系统架构
  • ***监测系统的构建(chkrootkit )
  • .NET 8 编写 LiteDB vs SQLite 数据库 CRUD 接口性能测试(准备篇)
  • .net core开源商城系统源码,支持可视化布局小程序
  • .NET Framework与.NET Framework SDK有什么不同?
  • .NET HttpWebRequest、WebClient、HttpClient
  • .NET Micro Framework初体验(二)
  • .net安装_还在用第三方安装.NET?Win10自带.NET3.5安装
  • .NET成年了,然后呢?
  • .NET分布式缓存Memcached从入门到实战
  • .net连接oracle数据库
  • @SpringBootApplication 包含的三个注解及其含义
  • @SuppressWarnings(unchecked)代码的作用