题目分析:
双指针法,一个从头部开始记为left,一个从尾部开始记为right,如果string[left]=string[right],则left=left+1,right=right-1,同时确保只能够删除一次。
代码如下:
class Solution {
public:
bool validPalindrome(string s) {
int left= 0;
int right= s.size() - 1;
while (left< right && s[left] == s[right]) {
++left;
--right;
}
if (left >= right) return true;
if (left < right) {
int l1 = left + 1;
int r1 = right;
while (l1 < r1 && s[l1] == s[r1]) {
++l1;
--r1;
}
if (l1 >= r1) return true;
int l2 = left;
int r2 = right - 1;
while (l2 < r2 && s[l2] == s[r2]) {
++l2;
--r2;
}
if (l2 >= r2) return true;
}
return false;
}
};