当字符串中最多可删除一个元素时,考虑字符串是否仍然满足回文要求:双指针遍历,逐一匹配相应位置的字符;在不匹配的位置,令左指针右移一位或者右指针左移一位(删除一个字符),在分别考虑当下的情况是否满足回文要求。
class Solution {
public:
bool validPalindrome(string s) {
int left=0,right=s.size()-1;
int flag=1;
while(left<right)
{
if(s[left]==s[right])
{
left++;
right--;
}
else
{
return valid(s,left,right-1)||valid(s,left+1,right);
}
}
return 1;
}
bool valid(string s,int begin,int end)
{
while(begin<end)
{
if(s[begin]==s[end])
{
begin++;
end--;
}
else
return 0;
}
return 1;
}
};