中心扩展法。
typedef pair<int, int> PII;
#define x first
#define y second
class Solution {
public:
PII expand(const string& A, int left, int right)
{
while (left >= 0 && right < A.length() && A[left] == A[right]) -- left, ++ right;
return make_pair(left + 1, right - 1);
}
int getLongestPalindrome(string A, int n) {
if (A.empty()) return 0;
int max_length = 0, st = 0, ed = 0;
for (int i = 0; i < A.length(); ++ i)
{
PII p1 = expand(A, i, i);
PII p2 = expand(A, i, i + 1);
if (p1.y - p1.x > ed - st) ed = p1.y, st = p1.x;
if (p2.y - p2.x > ed - st) ed = p2.y, st = p2.x;
}
return ed - st + 1;
}
};
京公网安备 11010502036488号