码迷,mamicode.com
首页 > 其他好文 > 详细

5. 最长回文子串

时间:2018-12-06 22:18:59      阅读:203      评论:0      收藏:0      [点我收藏+]

标签:return   art   longest   col   mil   turn   rom   family   int   

给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。

示例 1:

输入: "babad"
输出: "bab"
注意: "aba" 也是一个有效答案。

示例 2:

输入: "cbbd"
输出: "bb"
string longestPalindrome(string s) {
      if (s.empty()) return "";
      int len = s.size();int longest = 1;
      int start = 0;
      vector<vector<int> > dp(len, vector<int>(len));
      for (int i = 0; i < len; i++)
      {
          dp[i][i] = 1;
          if (i < len - 1)
          {
              if (s[i] == s[i + 1])
              {
                  dp[i][i + 1] = 1;
                  start = i;
                  longest = 2;
              }
          }
      }
      for (int k = 3; k<=len ;k++)//字串長度
      for (int i = 0; i < len - k+1; i++)
      {
          int j = i+k-1;
          if (s[i] == s[j] && dp[i + 1][j - 1] == 1)
          {
              dp[i][j] = 1;
              start = i;
              longest = k;
          }
      }
      return s.substr(start, longest);//返回字串(起始位置,長度)
  }

 

5. 最长回文子串

标签:return   art   longest   col   mil   turn   rom   family   int   

原文地址:https://www.cnblogs.com/binanry/p/10079668.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!