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

    给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为1000。
    示例 1:
    输入: "babad"
    输出: "bab"
    注意: "aba"也是一个有效答案。
    示例 2:
    输入: "cbbd"
    输出: "bb"

     1 string longestPalindrome(string s)
     2 {
     3     
     4     string str = "$#";
     5     for(int i = 0; i < s.size(); i++)   //字符串长度奇偶变换,添加'$'防止数组越界
     6     {
     7         str += s[i];
     8         str += "#";
     9     }
    10     str += "$";
    11     //cout<<str;
    12  
    13     int p[str.size()-2]={0};    //定义p[i]数组
    14 
    15     int right = 0, mid = 0;
    16     for(int i = 1; i <  str.size()-1; i++)
    17     {
    18         if(right > i)
    19         {
    20             p[i] = (p[2*mid - i] < (right - i) ? p[2*mid - i] : (right - i));   //计算以i为中心的回文字串的最小长度
    21         }
    22         else
    23         {
    24             p[i] = 1;
    25         }
    26 
    27         while(str[i - p[i]] == str[i + p[i]])  p[i]++;     //回文子串长度延伸
    28         
    29         if(i + p[i] > right)
    30         {
    31             right = i + p[i];
    32             mid = i;
    33         }
    34 
    35     }
    36         
    37     int max = 0, middle=0;
    38     for(int i = 1; i < str.size()-1; i++)   //生成最终结果
    39     {
    40         if(p[i] > max)
    41         {
    42             middle = i;
    43             max = p[i];
    44         }
    45     }
    本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
  • 相关阅读:
    【HTML】使用css3和html给网站添加上春节灯笼特效
    【CSS】学习笔记2 字体设置
    【CSS】学习笔记3 段落设置
    【CSS】学习笔记1 使用CSS样式表
    正则
    图片懒加载
    uni-app-组件
    uni-app-condition(条件)启动模式
    uni-app-页面
    uni-app项目目录和开发规范
  • 原文地址:https://www.cnblogs.com/nkqlhqc/p/9085333.html
Copyright © 2011-2022 走看看