zoukankan      html  css  js  c++  java
  • [leetcode]5最长回文子串

    这道题就是很简单的模拟思想,把我们人的正常思维用电脑模拟出来即可

    如果我们寻找回文字符串,首先我们会想法找到回文的中心,然后从中心向两侧扩散寻找,因此代码就是简单的从中间向两边。

    需要特殊处理的是回文字符串的奇偶性,长度为奇数那么以一个字母为中心,如果是偶数就是两个,需要分别判断。

    最后因为有一个空输入,可以单独处理。

     1 char* longestPalindrome(char* s) {
     2     int i=0,l,r;
     3     int max=1;
     4     int l0=0,r0=0;
     5     if(s[0]=='')
     6         return s;
     7     while(s[i]!='')
     8     {
     9         //判断偶数回文
    10         if(s[i]==s[i+1])
    11         {
    12             l=i;
    13             r=i+1;
    14             while(((l-1)>=0)&&(s[r+1]!='')&&(s[l-1]==s[r+1]))
    15             {
    16                 l--;
    17                 r++;
    18             }
    19             if(max<(r-l+1))
    20             {
    21                 max=r-l+1;
    22                 l0=l;
    23                 r0=r;
    24             }
    25                 
    26             
    27             
    28         }
    29         //判断奇数回文
    30         
    31         l=i-1;
    32         r=i+1;
    33         
    34         if((l>=0)&&(s[l]==s[r]))
    35         {
    36             while(((l-1)>=0)&&(s[r+1]!='')&&(s[l-1]==s[r+1]))
    37             {
    38                 l--;
    39                 r++;
    40             }
    41             if(max<(r-l+1))
    42             {
    43                 max=r-l+1;
    44                 l0=l;
    45                 r0=r;
    46             }
    47                 
    48         }
    49         i++;
    50     }
    51     
    52     for(i=0;i<max;i++)
    53     {
    54         s[i]=s[l0+i];
    55     }
    56     s[i]='';
    57     return s;
    58 }
  • 相关阅读:
    python网络编程--线程GIL(全局解释器锁)
    python网络编程--进程线程
    html之块级标签h系列,div
    html之head,base,meta,title
    可视化SNV安装
    MySQLdb模块的安装
    python之os模块
    python之时间函数
    python之路之正则表达式
    python之路 之open
  • 原文地址:https://www.cnblogs.com/trickofjoker/p/10548362.html
Copyright © 2011-2022 走看看