680. 验证回文字符串 Ⅱ
//回文,最多只能删除一个
//解题思路:双指针,如果遇到不相等的,删除后再判断剩余字符串是否是回文
//需要注意的是删除有两种方式,删除left或者删除right,因此单独写一个判断字符串是否是回文的子函数比较方便
class Solution {
public:
bool validPalindrome(string s) {
int left = 0;
int right = s.size()-1;
while(left < right)
{
if(s[left] != s[right])
{
if(palindrome(s,left+1,right) || palindrome(s,left,right-1)) return true;
else return false;
}
left++;
right--;
}
return true;
}
private:
//私有函数专用与判断字符串是否为回文字符串
bool palindrome(string s, int l, int r)
{
while(l < r)
{
if(s[l] != s[r]) return false;
l++;
r--;
}
return true;
}
};