NC17.最长回文子串
class Solution {
public:
int getLongestPalindrome(string A) {
int rst = 0;
int len = (int)A.length();
for (int i = 0; i < len - rst; ++i) {
for (int j = len - 1; j >= i; --j) {
if (isPalindrome(A, i, j)) {
rst = max(rst, abs(j - i + 1));
}
}
}
return rst;
}
private:
bool isPalindrome(const string& s, int l, int r) {
while (l < r) {
if (s[l++] != s[r--]) {
return false;
}
}
return true;
}
};
解题思路:
难点1:isPalindrome
的抽象;
难点2:双指针的抽象;
难点3:len - rst
进行优化,不用遍历完所有字符,如果最后剩下的字符数量小于rst
就不用遍历了;