美文网首页
Leetcode680:验证回文字符串2

Leetcode680:验证回文字符串2

作者: VIELAMI | 来源:发表于2020-05-19 08:47 被阅读0次

【思路】

  1. 暴力法: 对于每一个字符,将它删去,再验证剩下的字符是不是回文串。
    时间复杂度:O(n^2) 会超时

  2. 使用左右指针
    当所指的字符相同时 移动
    当所指的字符不相同时,有两种情况
    删掉左边的 和删掉右边的
    此时验证这两种情况下的字符串是不是回文字符串

bool validPalindrome(string s) {
    //Leetcode680: 验证回文字符串II
    return (helpPali(s,0,s.size()-1));
}

bool helpPali(string s, int left, int right) {
    while (left <= right) {
        if (s[left] == s[right]) {
            left++;
            right--;
        }
        else {
            return isPali(s, left, right - 1) || isPali(s, left + 1, right);
        }
    }
    return true;
}

bool isPali(string s, int left, int right) {
    for (int i = left, j = right; i < j; i++, j--) {
        if (s[i] != s[j]) return false;
    }
    return true;
}

相关文章

网友评论

      本文标题:Leetcode680:验证回文字符串2

      本文链接:https://www.haomeiwen.com/subject/ehkvohtx.html