最长回文

Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 32452 Accepted Submission(s): 11908

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

Input
输入有多组case,不超过120组,每组输入为一行小写英文字符a,b,c…y,z组成的字符串S
两组case之间由空行隔开(该空行不用处理)
字符串长度len <= 110000

Output
每一行一个整数x,对应一组case,表示该组case的字符串中所包含的最长回文长度.

Sample Input
aaaa
abab

Sample Output
4
3

Source
2009 Multi-University Training Contest 16 - Host by NIT

问题链接:HDU3068 最长回文
问题简述:(略)
问题分析
    该题是计算字符串中最长回文的模板题,套manacher算法的函数计算就可以了。
    需要注意的是使用的存储空间要合适。字符串长度为n时,需要2n+3的存储空间。
程序说明:(略)
参考链接:(略)
题记:(略)

AC的C++语言程序如下:

/* HDU3068 最长回文 */#include <iostream>
#include <stdio.h>
#include <string.h>using namespace std;#define N 110000
char s[N + N + 3];
int p[N + N + 3];int manacher(char s[], int p[])
{int len = strlen(s), id = 0, maxlen = 0;for(int i = len; i >= 0; i--) {     /* 插入'#' */s[i + i + 2] = s[i];s[i + i + 1] = '#';}s[0] = '*';for(int i = 2; i < 2 * len + 1; i++) {if(p[id] + id > i)p[i] = min(p[2 * id - i], p[id] + id - i);elsep[i] = 1;while(s[i - p[i]] == s[i + p[i]])p[i]++;if(id + p[id] < i + p[i])id = i;maxlen = max(maxlen, p[i]);}return maxlen - 1;
}int main(void)
{while(scanf("%s", s) != EOF)printf("%d\n", manacher(s, p));return 0;
}

HDU3068 最长回文【manacher算法】相关推荐

  1. 最长回文(Manacher算法模板)

    题目描述 给出一个只由小写英文字符a,b,c-y,z组成的字符串S,求S中最长回文串的长度. 回文就是正反读都是一样的字符串,如aba, abba等 Input 输入有多组case,不超过120组,每 ...

  2. HDU 3068 最长回文 manacher算法

    Manacher算法的裸题 下面简单说一下复杂度为O(n)的马拉车算法  首先过程中涉及到的变量有:  p[i]表示以t[i]字符为中心的回文子串的半径  id为最大回文子串中心的位置  mx是回文串 ...

  3. HDU-3068-最长回文 (Manacher算法)

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

  4. C++longest palindromic subsequence最长回文子序列算法实现(附完整源码)

    C++longest palindromic subsequence最长回文子序列算法 C++longest palindromic subsequence最长回文子序列算法实现完整源码(定义,实现, ...

  5. JAVA:实现LongestPalindromicSubsequence最长回文子序列算法(附完整源码)

    JAVA:实现LongestPalindromicSubsequence最长回文子序列算法 package com.thealgorithms.dynamicprogramming; public c ...

  6. Manacher 求最长回文子串算法

    Manacher算法,是由一个叫Manacher的人在1975年发明的,可以在$O(n)$的时间复杂度里求出一个字符串中的最长回文子串. 例如这两个回文串"level"." ...

  7. Manacher's algorithm: 最长回文子串算法

    Manacher 算法是时间.空间复杂度都为 O(n) 的解决 Longest palindromic substring(最长回文子串)的算法.回文串是中心对称的串,比如 'abcba'.'abcc ...

  8. hdu3068 . 最长回文

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

  9. 最长回文Manacher

    预处理: 判断一个串是不是回文串,往往要分开编写,造成代码的拖沓 int LongestPalindrome(const char * s, int n){ int i, j, max; if (s ...

最新文章

  1. 关于Unity中如何判断一个动画播放结束
  2. python卡尔曼滤波跟踪_使用卡尔曼滤波器以圆周运动跟踪机器人
  3. mysql like 多个条件_千万级MySQL数据库这样建索引可以让你的数据库飞起来.........
  4. 计算机组成原理艾列富,理论结合实验的计算机组成原理课程教学措施初探.pdf...
  5. Element-UI 要怎么学?官方文档!
  6. 如何在spring框架中解决多数据源的问题[转]
  7. 软件概要设计书写模板
  8. 51Job行业分类和行业编号汇总,格式:Json
  9. 如何方便快速的在指定文件夹打开cmd
  10. WinForm——MDI窗体
  11. 一个小白程序员的目标
  12. 计算机画图保存的图片怎么找到,想知道电脑截图保存在哪儿找
  13. ih5连接mysql数据库_iH5高级教程:H5数据应用,多种数据的判断
  14. 【语音识别】基于动态时间规整(DTW)的孤立字语音识别Matlab源码
  15. MySQL根据出生日期查询年龄,以及对年龄进行分组统计
  16. 西山小菜鸟之Scrapy学习笔记---爬取企查查网公司的裁判文书信息
  17. 阿里的数据分析技术有多强?从优酷的大数据架构中,我学到了这些
  18. 阿里云大数据分析师职业认证
  19. 【Linux】动态库与静态库
  20. 提供了一些工具类以及自定义 View,用于日常的 Android 快速开发

热门文章

  1. 使用QT的qmake工具生成VS工程
  2. 几种ELK常见的架构模式
  3. MMO移动游戏性能分析报告:渲染、UI、逻辑代码和内存
  4. php数据结构之线性表,php数据结构之顺序链表与链式线性表示例
  5. datagridview输入数据格式化_第五节,输入输出函数
  6. oracle @id@,修改oracle用户id
  7. import关键字的使用
  8. android 应用升级sdk版本号,Bugly Android 应用升级 SDK 常见问题
  9. c语言源程序总是由一个或多个函数组成,2016年中山大学卡内基梅隆大学C语言程序设计复试笔试仿真模拟题...
  10. java动态数组储存敌机_如何使用参数通过graphql将动态数组字符串存储为neo4j中的节点属性?...