`
暴风雪
  • 浏览: 391998 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

[字符串最长回文子串]hdoj 3068:最长回文

阅读更多

大致题意:
    给出一个只由小写英文字符a,b,c...y,z组成的字符串S,求S中最长回文串的长度。


大致思路:
    这题用后缀数组超时了……囧rz。其实这里用的是manacher算法,效率为O(n),比后缀数组的O(log n)要高。

算法详见http://blog.csdn.net/tanhaiyuan/article/details/7091019

#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
const int nMax=100005;
char str[nMax], str1[2*nMax];
int len,p[2*nMax];
void Build() {  //abc-->@#a#b#c#
    int i=0,j;
    str1[0]='@';//开始加入另特殊字符
    str1[1]='#';
    j=2;
    for(i=0; i<len; i++ ){//在每个字符两边都插入一个特殊字符
        str1[j++]=str[i];
        str1[j++]='#';
    }
    str1[j]='\0';
}

int manacher(){
    int idd,mxx=0,maxx=0,record;
    memset(p,0,sizeof(p));
    for(int i=1;str1[i]!='\0';i++){
        if( mxx>i )
            p[i]=min(mxx-i, p[2*idd-i]);
        else p[i]=1;
        while(str1[i+p[i]]==str1[i-p[i]])
            p[i]++;

        if( i+p[i]>mxx ){
            mxx=i+p[i];
            idd=i;
        }

        if( p[i]>maxx){
            maxx=p[i]-1;//P[id]-1就是该回文子串在原串中的长度
            record=i;
        }
    }
    return maxx;
}

int main(){
    int i, j,ans;
    while(scanf("%s",str)!=EOF){
        len=strlen(str);
        Build();
        ans=manacher();
        printf("%d\n",ans);
    }
}
 
0
0
分享到:
评论

相关推荐

    求回文子串_O(n)_manacher算法

    例如,在解决HDOJ_3068_最长回文子串问题时,Manacher算法能够快速准确地找出给定字符串中的最长回文子串,为各种文本分析、模式匹配等任务提供了高效的解决方案。 综上所述,Manacher算法作为一种专门针对回文子串...

    其他字符串相关题解1

    在字符串处理中,能够快速找到最长回文子串是许多应用场景的基础,比如DNA序列分析、网络协议的校验等。Manacher算法的巧妙之处在于,它摒弃了传统的动态规划方法中O(n^2)的时间复杂度,而是将问题转化为在O(n)时间...

    HDOJ题目分类 HDOJ题目分类

    5. **应用领域**:字符串处理、网络流、模拟、游戏理论等。 【压缩包子文件的文件名称列表】:HDOJ题目分类.pdf 这个PDF文档很可能包含了HDOJ平台上所有题目的详细分类列表,每种分类下可能有对应的题目编号、题目...

    HDOJ暑期多校联赛第三场

    7. **字符串处理**:模式匹配(KMP、Boyer-Moore)、字符串操作(子串查找、最长重复子串等)在文本处理中至关重要。 8. **数学知识**:包括数论(质因数分解、模运算)、组合数学(排列组合、鸽巢原理)、图论中的...

    hdoj1002——大整数相加

    - 在此题中,两个大整数是作为字符串输入的,因为字符串没有长度限制,可以很好地用来表示任意大的整数。 - 使用 `scanf` 函数读取字符串,如 `scanf("%s %s", a, b);`,其中 `a` 和 `b` 分别代表两个大整数。 2...

    最长公共子序列 一个给定序列的子序列是在该序列中删去若干元素后得到的序列。给定两个序列X和Y,当另一序列Z既是X的子序列又是Y的子序列时,称Z是序列X和Y的公共子序列。例如,若X={A,B,C,B,D,B,A},Y={B,D,C,A,B,A},则序列{B,C,A}是X和Y的一个公共子序列,但它不是X和Y的一个最长公共子序列。序列{B,C,B,A}也是X和Y的一个公共子序列,它的长度为4,而且它是X和Y的一个最长公共子序列,因为X和Y没有长度大于4的公共子序列。 最长公共

    ### 最长公共子序列问题详解 #### 一、问题定义及背景 最长公共子序列(Longest Common Subsequence,简称LCS)问题属于计算机科学领域中的一个重要问题,尤其是在算法设计与分析方面。此问题的核心在于寻找两个...

    hdoj杭电入门训练题

    - 使用循环或字符串函数检查字符串是否包含特定字符序列。 - 如果包含,则输出“YES”,否则输出“NO”。 ##### 3. Elevator (HDOJ1008) **知识点:** - 排序算法。 - 最优路径寻找。 **解题思路:** - 对输入楼层...

    HDOJ.zip_hduoj100题

    3. **字符串处理**:在编程竞赛中,字符串处理题目常见,涉及模式匹配、子串查找、字符串反转等。熟悉KMP、Boyer-Moore等字符串匹配算法能提高解题效率。 4. **数学应用**:部分题目可能需要运用到离散数学、组合...

    ACM集训用的清晰易懂的ppt

    题目要求找出一组字符串中,最长的那个字符串X,使得X或者其逆序可以作为任意一个给定字符串的子串。对于这类问题,我们可以首先对字符串按长度排序,然后从最短的字符串开始,检查它的所有子串是否满足条件,从而...

    HDOJ.rar_HD_HDOJ

    6. **字符串处理**:模式匹配(KMP、Boyer-Moore、Rabin-Karp)、最长公共前后缀、编辑距离等。 7. **计算几何**:直线与圆的交点、点与多边形的关系、凸包问题等。 学习这些源代码可以提升编程能力,尤其是解决...

    HDOJ 80题 Java

    这意味着这些题目可能涵盖了从基础到高级的各种难度,包括但不限于排序、搜索、图论、动态规划、字符串处理、递归等常见算法主题。 在【压缩包子文件的文件名称列表】中,我们看到" HDOJ80 "这个文件,这可能是一个...

    HDOJ离线版

    《HDOJ离线版:探索编程竞赛的智慧宝库》 HDOJ,全称为“杭州电子科技大学在线评测系统”(Hangzhou Dianzi University Online Judge),是中国早期的编程竞赛平台之一,深受广大编程爱好者和在校学生的喜爱。HDOJ...

    hdoj.rar_Dividing HDOJ_OJ 1082_hdoj 10_杭电oj_杭电oj1000

    【标题】"hdoj.rar_Dividing HDOJ_OJ 1082_hdoj 10_杭电oj_杭电oj1000" 涉及的知识点主要围绕着“杭电在线判题系统(HDOJ)”以及其中的题目1082和10系列题目。HDOJ是杭州电子科技大学主办的一个在线编程竞赛平台,...

    hdoj解题代码

    这些文件是针对“hdoj”(HDU Online Judge)在线编程竞赛平台的解题代码,涵盖了题目编号从1000到1050的若干题目。HDU Online Judge是一个用于训练和测试编程技能的系统,用户可以提交代码解决各种算法问题,并获取...

    hdoj--acm题目,有注释

    "hdoj--acm题目,有注释" 本资源提供了多个 ACM 题目的解决方案,代码都带有注释,非常适合初学者学习。下面是对每个题目的知识点总结: 2000:本题目要求输入三个字符,输出按照从小到大排序的结果。本代码使用了...

    hdoj2066最短路

    根据给定的文件信息,我们可以总结出以下关于“hdoj2066最短路径”的相关知识点: ## hdoj2066最短路径概述 ### 标题解析:“hdoj2066最短路” - **hdoj**:High Density Online Judge(高密度在线评测系统),是...

    hdoj:杭电OJ题目源码记录 —— a source code of hdoj acm problem archive

    hdoj-problem-archive 杭电OJ题目源码记录 —— a source code of hdoj acm problem archive 简介 此项目为 的 题目以及代码仓库 src 中每一个文件夹代表一个题目 每个文件夹中都有 原题文档介绍.md 原题文档介绍.md...

    HDOJ1002

    ACM ICPC HDOJ1002

    HDOJ1001

    ACM ICPC HDOJ1001

    hdoj1001标程

    hdoj1001标程

Global site tag (gtag.js) - Google Analytics