求字符串中的最长回文

来源:互联网 发布:阿里云深圳机房速度 编辑:程序博客网 时间:2024/04/28 11:52
由中心向两边扩展法。时间复杂度为O(n^2),空间复杂度为O(1)
    #include<string>      #include<iostream>      using namespace std;            string getString(string str,int l,int r){             int n=str.length();          while(l>=0&&r<=n-1&&str[l]==str[r]){              l--;              r++;          }          return str.substr(l+1,r-l-1);      }            string IsPalindrome(string str){          int n=str.length();          if(str==""){              return "";          }          string longest=str.substr(0,1);          for(int i=0;i<n-1;i++){              string p1=getString(str,i,i);              if(p1.length()>longest.length()){                  longest=p1;              }              string p2=getString(str,i,i+1);              if(p2.length()>longest.length()){                  longest=p2;              }          }          return longest;      }            int main(){          string str="djdslkAABCDEAfjdl1234321skjflkdsjfkldsababasdlkfjsdwieowowwpw";          string s=IsPalindrome(str);          cout<<s<<endl;          return 0;      }  

原创粉丝点击