求字符串中的最长回文

xiaoxiao2021-02-28  89

由中心向两边扩展法。时间复杂度为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; }
转载请注明原文地址: https://www.6miu.com/read-83621.html

最新回复(0)