题目链接
分析
第一次发现不同后,分别删除剩余字符串左右两端再次判断即可
代码实现
class Solution {
public:
bool check(string& s, int x, int y) {
for(int i = x, j = y; i < j; ++i, --j) {
if(s[i] != s[j]) {
return false;
}
}
return true;
}
bool validPalindrome(string s) {
for(int i = 0, j = s.size() - 1; i < j; ++i, --j) {
if(s[i] != s[j]) {
return check(s, i + 1, j) || check(s, i, j - 1);
}
}
return true;
}
};
复杂度分析
- 时间复杂度:$O(n)$
- 空间复杂度:$O(1)$