题目地址:
https://leetcode.com/problems/valid-palindrome-ii/
给定一个字符串,问其能否删去 0 0 0或 1 1 1个字符变为回文串。
直接判断是否回文,如果某一对字符不等了,就尝试删去其中一个继续判断。代码如下:
class Solution {
public:
bool validPalindrome(string s) {
auto f = [&](int l, int r) {
for (; l < r; l++, r--)
if (s[l] != s[r]) return false;
return true;
};
for (int i = 0, j = s.size() - 1; i < j; i++, j--)
if (s[i] != s[j]) return f(i + 1, j) || f(i, j - 1);
return true;
}
};
时间复杂度 O ( n ) O(n) O(n),空间 O ( 1 ) O(1) O(1)。