代码改变世界

leetcode - Longest Palindromic Substring

2013-04-26 15:48  张汉生  阅读(205)  评论(0编辑  收藏  举报

题目描述:点击此处

 1 class Solution {
 2 public:
 3   int minInt (int a, int b){
 4     return a<=b?a:b;
 5   }
 6   string longestPalindrome(string s) {
 7     // Start typing your C/C++ solution below
 8     // DO NOT write int main() function
 9     string rlt = "";
10     if (s.length()<=0)
11       return "";
12     int i, j;
13     int len = s.length();
14     for (i=0; i<len; i++){
15       int l = minInt (i+1, len-i-1); 
16       int k = minInt (i, len-i-1);
17       if (2*l<=rlt.length() && 2*k+1<=rlt.length())
18         break;
19       for (j=0; j<l; j++){
20         if (s.at(i-j) != s.at(i+j+1))
21           break;
22       }
23       if (rlt.length()<j*2)
24         rlt = s.substr(i-j+1, j*2);
25       for (j=0; j<k; j++){
26         if (s.at(i-j-1) != s.at(i+j+1))
27           break;
28       }
29       if (rlt.length()<j*2+1)
30         rlt = s.substr(i-j, j*2+1);
31     }
32     return rlt;
33   }
34 };