最长对称字符子串

原创 2016年08月28日 21:24:00

问题: 输入一个字符串,输出该字符串中对称的子字符串的最大长度。比如输入字符串“google”,由于该字符串里最长的对称子字符串是“goog”,因此输出4。
测试用例:
输入:iqiyiyiq
abccba
输出:4
3

int MaxLenSub(char *str)
{

    if (str==NULL|| *str=='\0' )
        return 0;

    int length=strlen(str);
    int new_len=1,len=1;    
    int cnt=0;
    int cnt1=0;
    int left=cnt-1,right=cnt+1;
    //奇数子串
    while(cnt<length-1)
    {
        len=1;
        left=cnt-1;right=cnt+1;
        while(left>=0 && right<=length-1 && *(str+left)==*(str+right))
        {
            len=right-left+1;
            left--;
            right++;
        }
        if(new_len<len)
            new_len=len;
        cnt++;
    }
    //偶数子串
    cnt=0;
    cnt1=1;
    while(cnt1<length-1)
    {
        if(*(str+cnt)==*(str+cnt1))
        {
            len=1;
            left=cnt-1;right=cnt1+1;
            while(left>=0 && right<=length-1 && *(str+left)==*(str+right))
            {
                len=right-left+1;
                left--;
                right++;
            }
        }
        if(new_len<len)
                new_len=len;
        cnt++;
        cnt1++;
    }

    cout<<new_len<<endl;
    return new_len/2+new_len%2;
}

相关文章推荐

L2-008. 最长对称子串

没看懂。。。  先转了,留着以后看看…… 转于:http://blog.csdn.net/yjf3151731373/article/details/51423812 #inclu...

L2-008. 最长对称子串----暴力+dp+Manacher

L2-008. 最长对称子串 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题...

L2-008. 最长对称子串 - 天梯赛练习题

对给定的字符串,本题要求你输出最长对称子串的长度。例如,给定"Is PAT&TAP symmetric?",最长对称子串为"s PAT&TAP s",于是你应该输出11。 输入格式: 输入在一行中给...
  • ly59782
  • ly59782
  • 2017年03月14日 16:09
  • 426

最长对称子串

最长对称子串

pat 最长对称子串

L2-008. 最长对称子串 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题...

PAT L2-008. 最长对称子串(25) (暴力,Manacher算法和DP解决)

1000的长度,100ms,o(N^2)的复杂度是可以过的,那就暴力枚举吧, 每次枚举起点和终点没如果此子串是回文串,那终点-起点+1即为回文串的长度,即可求出最大长度. 中间有个小问题,看代码注释....

最长对称子串(动态规划解法)

5-12 最长对称子串   (25分) 对给定的字符串,本题要求你输出最长对称子串的长度。例如,给定Is PAT&TAP symmetric?,最长对称子串为s PAT&TAP s,...

数据结构与算法分析笔记与总结(java实现)--字符串12:最长无重复字符子串练习题

数据结构与算法分析笔记与总结(java实现)--字符串12:最长无重复字符子串练习题...

最长对称字符串问题/最长回文子串问题

题目:输入一个字符串,输出该字符串中对称的子字符串的最大长度。比如输入字符串“google”,由于该字符串里最长的对称子字符串是“goog”,因此输出4。 何海涛日志中给出算法是:先判断子字符串A是...

求字符串中最长无重复字符的子串

题目:求一个字符串中最长的没有重复字符的子串。 方法一:穷举法,使用2重外循环遍历所有的区间,用2重内循环检验子串是否符合“无重复字符”这一要求。其中外层循环i、j 遍历所有的下标,m、n是内层...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:最长对称字符子串
举报原因:
原因补充:

(最多只允许输入30个字)