longest palindromic substring 有问题

 1 class Solution {
 2 public:
 3     string LCS( string& str1,string& str2){ 
 4     int xlen=str1.size();       //横向长度 
 5     vector<int> tmp(xlen);        //保存矩阵的上一行 
 6     vector<int> arr(tmp);     //当前行 
 7     int ylen=str2.size();       //纵向长度 
 8     int maxele=0;               //矩阵元素中的最大值 
 9     int pos=0;                  //矩阵元素最大值出现在第几列 
10     for(int i=0;i<ylen;i++){ 
11         string s=str2.substr(i,1); 
12         arr.assign(xlen,0);     //数组清0 
13         for(int j=0;j<xlen;j++){ 
14             if(str1.compare(j,1,s)==0){ 
15                 if(j==0) 
16                     arr[j]=1; 
17                 else
18                     arr[j]=tmp[j-1]+1; 
19                 if(arr[j]>maxele){ 
20                     maxele=arr[j]; 
21                     pos=j; 
22                 } 
23             }        
24         } 
25 //      { 
26 //          vector<int>::iterator iter=arr.begin(); 
27 //          while(iter!=arr.end()) 
28 //              cout<<*iter++; 
29 //          cout<<endl; 
30 //      } 
31         tmp.assign(arr.begin(),arr.end()); 
32     } 
33     string res=str1.substr(pos-maxele+1,maxele); 
34     return res; 
35 } 
36     string longestPalindrome(string s) {
37         // Start typing your C/C++ solution below
38         // DO NOT write int main() function
39         if( s == "" ) return "";
40         string str = "";
41         for(int i=s.length()-1;i>=0;i--)
42             str += s[i];
43         return LCS(str,s); 
44     }
45 };

 

posted on 2013-09-05 16:24  jumping_grass  阅读(132)  评论(0)    收藏  举报

导航