水题,注意时间复杂度不要超过O(n^2)。
class Solution {
public:
string longestPalindrome(string s) {
string ans;
int ans_length = 0;
int length = s.length();
for (int center = 0; center < length; center++) {
// 奇数
int head = center;
int tail = center;
int tmp_ans_length = 0;
while(head >= 0 && tail < length && s[head] == s[tail]) {
if (head == tail) {
tmp_ans_length += 1;
} else {
tmp_ans_length += 2;
}
head--;
tail++;
}
if (tmp_ans_length >= ans_length) {
ans_length = tmp_ans_length;
ans = s.substr(head+1, (tail-1) - (head+1) + 1);
}
// 偶数
head = center;
tail = center+1;
tmp_ans_length = 0;
while(head >= 0 && tail < length && s[head] == s[tail]) {
tmp_ans_length += 2;
head--;
tail++;
}
if (tmp_ans_length >= ans_length) {
ans_length = tmp_ans_length;
ans = s.substr(head+1, (tail-1) - (head+1) + 1);
}
}
return ans;
}
};