给定一个非空字符串 s,最多删除一个字符。判断是否能成为回文字符串。
来源:力扣(LeetCode)
回文字符串,是指具有左右对称特点的字符串,例如 "abcba" 就是一个回文字符串。
这种判断方式刚好相当于一次跳过机会。
class Solution { public: bool validPalindrome(string s) { for (int index1 = 0, index2 = s.size() - 1; index1 <= index2; ++index1, --index2) { if (s[index1] != s[index2]) //此处相当于一次跳过机会 return isPalindrome(s, index1 + 1, index2) || isPalindrome(s, index1, index2 - 1); } return true; } bool isPalindrome(string s, int index1, int index2) { while (index1 <= index2) { if (s[index1++] != s[index2--]) return false; } return true; } };