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

[Leetcode] Longest Palindromic Substring

时间:2015-03-30 22:49:58      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:

Given a string S, find the longest palindromic substring in S. You may assume that the maximum length of S is 1000, and there exists one unique longest palindromic substring.

最长回文,对于每一个字符从中间向两边找,注意分奇数与偶数两种情况。总的时间复杂度为O(n^2)。另外Manacher算法复杂度为O(n),Manacher算法好复杂的样子,智商捉急,得好好消化一下。先贴个简单的吧。

 1 class Solution {
 2 public:
 3     int getLPS(const string &s, int idx1, int idx2) {
 4         while (idx1 >= 0 && idx2 < s.length() && s[idx1] == s[idx2]) {
 5             --idx1;
 6             ++idx2;
 7         }
 8         return idx2 - idx1 - 1;
 9     }
10     
11     string longestPalindrome(string s) {
12         if (s.length() < 2) return s;
13         int lps = -1, lps1, lps2, pos;
14         for (int i = 0; i < s.length(); ++i) {
15             lps1 = getLPS(s, i, i);
16             lps2 = getLPS(s, i, i + 1);
17             if (lps1 > lps || lps2 > lps) {
18                 pos = i;
19                 lps = max(lps1, lps2);
20             }
21         }
22         if (lps & 0x1) return s.substr(pos-(lps-1)/2, lps);
23         else return s.substr(pos-(lps-2)/2, lps);
24     }
25 };

 

[Leetcode] Longest Palindromic Substring

标签:

原文地址:http://www.cnblogs.com/easonliu/p/4379349.html

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