680 验证回文串 II

·   ·   ·   ·

  ·   ·


题目链接

680. 验证回文串 II

分析

第一次发现不同后,分别删除剩余字符串左右两端再次判断即可

代码实现

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)$