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

找出字符串中的最长的回文子串

时间:2017-05-28 12:57:40      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:style   string   回文   code   logs   max   ==   ges   const   

 1 class Solution {
 2 public:
 3     string longestPalindrome(string s) {
 4         int maxLoc=0;
 5         int maxNum=1;
 6         const int stringSize=s.size();
 7         if(stringSize==1){
 8             return s;
 9         }
10         
11         for(int i=1; i!= 2*stringSize-1-1;++i){
12             int a, b;
13             int num=1;
14             if(i%2==0){     //even 
15                 a=(int)(i-1)/2;
16                 b=(int)(i+1)/2+1;
17                 num=1;
18             }
19             else{   //old
20                 a=(int)(i-1)/2;
21                 b=(int)(i+1)/2;
22                 num=0;
23             }
24             
25             while(a>=0 && b<=stringSize){
26                 if(s[a] == s[b]){
27                     num=num+2;
28                     a--;
29                     b++;
30                 }
31                 else{
32                     break;
33                 }
34             }
35             if(num>maxNum){
36                 maxNum=num;
37                 maxLoc=i;
38             }
39         }
40         
41         if(maxLoc%2==0){
42            return s.substr(maxLoc/2-(maxNum-1)/2, maxNum); 
43         }
44         else{
45             return s.substr(maxLoc/2+1-maxNum/2, maxNum);
46         }
47     }
48 };

 

找出字符串中的最长的回文子串

标签:style   string   回文   code   logs   max   ==   ges   const   

原文地址:http://www.cnblogs.com/cofludy/p/6915448.html

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