LeetCode 每日一题 680. 验证回文字符串 Ⅱ

680. 验证回文字符串 Ⅱ

解题思路:

这道题时改编回文字串的题,直接暴力判断会超时,所以要想办法在线性时间内解决,由于题目限制只能删除一个字符,这个时候我们可以在第一次双指针不匹配的时候选择性删除某一面的字符,两次判断是否为回文字串,如果都不行则返回false,如果删除某一面的字符可以符合要求,就返回true,显然应该使用 || 来判断最后的结果

源代码:
/**
 * @param {string} s
 * @return {boolean}
 */
var judge = function(s){
    var i = 0, j = s.length-1;
        while(i < j){
            if(s[i] != s[j]) return false;
            i++;j--;
        }
    return true;
};


var validPalindrome = function(s) {
        var i = 0, j = s.length - 1;
        var index = 0;
        while(i < j){
            if(index == 0 && s[i] != s[j]){
                break;
            }
            i++;j--;
        }
        var str_tmp = s;
        str_tmp = (s.slice(0,i) + s.slice(i+1, s.length));
        var l = judge(str_tmp);
        str_tmp = (s.slice(0,j) + s.slice(j+1, s.length));
        var r = judge(str_tmp);
        return l || r;
    
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章