标签:max hint 递归 利用 最长回文子串 code for public 结果
求字符串的最长回文子串。
看了hint没看solution。开心。
暴力的思路是O(n^2) start - end pairs and O(n) palindromic checks。但是1000的复杂度只能采用O(n^2)的做法。所以目标是压缩cheak过程的复杂度。关键是:如何利用之前的判断结果?如:已知aba是回文,则xabax是回文,而xabay不是。但是因为复杂度,显然不能递归判断。所以采用回文中心为外层循环,回文长度为内层循环,构成O(n*n)解法。注意考虑解长度单双数问题。
class Solution { public: string longestPalindrome(string s) { int maxp=1; string ans=s.substr(0,1); int n=s.length(); for (int i=0;i<n;i++){ int l=i,r=i; while (l>0&&r<n+1&&s[l-1]==s[r+1]){ l--;r++; } if (r-l+1>maxp) { ans=s.substr(l,r-l+1); maxp=r-l+1; } }//for for (int i=0;i<n-1;i++){ int l=i,r=i+1; if (s[l]==s[r]){ while (l>0&&r<n+1&&s[l-1]==s[r+1]){ l--;r++; } if (r-l+1>maxp) { ans=s.substr(l,r-l+1); maxp=r-l+1; } } }//for return ans; } };
LeetCode 5. Longest Palindromic Substring
标签:max hint 递归 利用 最长回文子串 code for public 结果
原文地址:https://www.cnblogs.com/travelller/p/9434270.html