栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

最长回文串

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

最长回文串

#include   
char qdu[100050];   
int manacher(char *str)      
{                   
    int i;          
    int res = 0;    
    for(i = 1;i<=strlen(str)-1;i++)
    {               
        int l = i;  
        int r = i;  
        while(str[i] == str[r+1]){ //以中心扩展,如果中心值abbba相等,那么当判断到第一个b的时候可以拓展到第三个b
            r++;    
            i = r;  
            }
        while(str[l-1] == str[r+1]) //向两侧扩展,找最大。
            {                       
             r++;
             l--;
            }           
        if(res < r-l+1) {//更新最大值
            res = r-l+1;
        }
    }
    return res;
}

int main()
{
        int loop;
        qdu[0] = '$';
//         gets(qdu+1);
    while(gets(qdu+1));
        printf("%dn",manacher(qdu));
 
    return 0;
}
 
 

#include
#include


int IsPalindrome(char *s, int begin, int end);

int main(void) 
{
    char pwdStr[10000];
    while(scanf("%s", pwdStr) != EOF)
    {
        int len = 1;
        for(int i = 0; pwdStr[i] != ''; i++)
        {
            for (int j = 0; pwdStr[i + j] != ''; j++)
            {
                if (IsPalindrome(pwdStr, i, i + j)) 
                { 
                    if (len < (j + 1))
                    {
                        len = j + 1;
                    }
                }
            }
            if (len >= (strlen(pwdStr) - i)) { break; }
        }
        printf("%dn", len);
    }
    return 0;
}

int IsPalindrome(char *s, int begin, int end)
{
    int i_begin = begin;
    int i_end = end;
    while(i_begin <= i_end)
    {
        if (s[i_begin++] != s[i_end--]) { return 0; }
    }
    return 1;
}

#include        //正确的代码

int main()
{
        int loop;
    char qdu[100050];  
          qdu[0] = '$';
        while(gets(qdu+1)){
        int res = 0;    
    for(int i = 1;i     {               
        int l = i;   int r=i; 
          
        while(qdu[i] == qdu[r+1]){//以中心扩展,如果中心值abbba相等,那么当判断到第一个b的时候可以拓展到第三个b
            r++;   i++;                    
        }
        
        while(qdu[l-1] == qdu[r+1]) //向两侧扩展,找最大。
            {                       
             r++;  l--;
            }           
        
        if(res < r-l+1) {//更新最大值
            res = r-l+1;
          }
    }
            printf("%dn",res);
        }
    return 0;
}
   
          


// {
//         int loop;
//     char qdu[100050];  
// //         qdu[0] = '$';
//         while(gets(qdu)){
//         int res = 0;    
//     for(int i = 1;i //     {               
//         int l = i;  
//         int r = i;  
//         while(qdu[i] == qdu[r+1]){//以中心扩展,如果中心值abbba相等,那么当判断到第一个b的时候可以拓展到第三个b
//             r++;    
//             i = r;       
//         }
//         while(qdu[l-1] == qdu[r+1]) //向两侧扩展,找最大。
//             {                       
//              r++;
//              l--;
//             }           
//         if(res < r-l+1) {//更新最大值
//             res = r-l+1;
//           }
//     }
//             printf("%dn",res);
//         }
//     return 0;
// }
   
          
   

#include   
  

int main()
{
        int loop;
    char qdu[100050];  
//         qdu[0] = '$';
        while(gets(qdu )){
        int res = 0;    
    for(int i = 0;i     {               
        int l = i;  
          
        while(qdu[i] == qdu[i+1]){//以中心扩展,如果中心值abbba相等,那么当判断到第一个b的时候可以拓展到第三个b
            i++;    
                 
        }
        while(qdu[l-1] == qdu[i+1]) //向两侧扩展,找最大。
            {                       
             i++;
             l--;
            }           
        if(res < i-l+1) {//更新最大值
            res = i-l+1;
          }
    }
            printf("%dn",res);
        }
    return 0;
}
   
          

    马拉车算法(易理解版)_GameRoad-CSDN博客

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/630284.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号