zoukankan      html  css  js  c++  java
  • 最长回文子串问题

    思路很简单,就是通过向两边扩展的方法,找出最大的,注意要分成奇数和偶数两种情况,都要计算才行。

     1 //最长回文子串,就是利用了回文数的另一种思想,从中间想两边扩展的思想,很有意思
     2 #include <iostream>
     3 using namespace std;
     4 
     5 int maxhuiwenzichuang(char * A,int n)
     6 {
     7     if(A==NULL||n<=0)
     8     {
     9         cout<<"wrong"<<endl;
    10         return -1;
    11     }
    12     int maxnum=0;
    13     for(int i=0;i<n;i++)
    14     {
    15         int j=0;
    16         while(i-j>=0&&i+j<=n-1)              //j从0开始扩展,有一个不满足就退出循环caba
    17         {
    18             if(A[i-j]==A[i+j])
    19                 j++;
    20             else                              //找到补登的也退出循环
    21                 break;
    22         }
    23         j--;                           //注意j多加了,要减一才行
    24         int jishu=2*j+1;               //奇数时个数
    25         if(jishu>maxnum)
    26             maxnum=jishu;
    27         j=0;
    28         while(i-j>=0&&i+j+1<=n-1)          //偶数情况如abbac
    29         {
    30             if(A[i-j]==A[i+j+1])
    31                 j++;
    32             else
    33                 break;
    34         }
    35         j--;
    36         int oushu=2*j+2;
    37         if(oushu>maxnum)
    38             maxnum=oushu;
    39     }
    40     return maxnum;
    41 }
    42 
    43 int main()
    44 {
    45     int n=8;
    46     char A[]={'a','b','b','a','c','a','b','b'};
    47     int max=maxhuiwenzichuang(A,8);
    48     if(max==-1)
    49         cout<<"wrong"<<endl;
    50     else
    51         cout<<"maxnum= "<<max<<endl;
    52     system("pause");
    53 }

    完!

  • 相关阅读:
    Jenkins 主备master-slave模式搭建
    vbox 相关
    jenkins 常见问题汇总
    linux git patch 和patch以及git diff 命令
    Linux中的free命令
    MySQL Show命令的使用
    MySQL 加锁处理分析 转
    共享锁【S锁】 排他锁【X锁】
    MySQL分库分表环境下全局ID生成方案 转
    mysql性能的检查和调优方法
  • 原文地址:https://www.cnblogs.com/zmlctt/p/3842710.html
Copyright © 2011-2022 走看看