680. 验证回文串 II
给你一个字符串 s,最多 可以从中删除一个字符。
请你判断 s 是否能成为回文字符串:如果能,返回 true ;否则,返回 false 。
这道题最直观的方法是先判断字符串s
是不是回文,如果是直接返回true
,如果不是,那么枚举每一个被删除的位置,
判断删除字符后是否是回文,如果是返回true
,否则返回false
。这种方法的时间复杂度是 O ( n 2 ) O(n^2) O(n2)。
// 辅助函数:判断字符串是否是回文
bool isPalindrome(const string& s) {
int left = 0;
int right = s.length() - 1;
while (left < right) {
if (s[left] != s[right]) {
return false;
}
left++;
right--;
}
return true;
}
bool validPalindrome