1. 程式人生 > >【JS】 驗證迴文字串 Ⅱ

【JS】 驗證迴文字串 Ⅱ

給定一個非空字串 s,最多刪除一個字元。判斷是否能成為迴文字串。

示例 1: 輸入: "aba" 輸出: True

示例 2: 輸入: "abca" 輸出: True 解釋: 你可以刪除c字元。 注意:

字串只包含從 a-z 的小寫字母。字串的最大長度是50000。

解法一: 對splice()函式不夠了解,用了好長的時間測來測去,最後發現,這個函式不能用於賦值,賦值會得到刪除物件而不是原物件,水平有限只能用這種方法了。以後有發現更好的方法再來補個解法二了

/**
 * @param date 2018/11/10 晚上
 */
var validPalindrome = function(s) {
    var s1=s.split("")
    var s2=s.split("")
    var z1=s.split("")
    var z2=s.split("")
    z1=z1.reverse()
    z2=z2.reverse()
    var j=0;
    for(var i=0;i<s1.length;i++){
        if(s1[i]!=z1[i] && j==0){
            j+=1;
            x=-(i+1);
            s1.splice(i,1)
            z1.splice(x,1)
            s2.splice(x,1)
            z2.splice(i,1)
        }
    }
    var result =1;
    for(var i=0;i<s1.length;i++){
        if(s1[i]!=z1[i]){
            result=0;
        }
    }
    if(result===0){
        for(var i=0;i<s2.length;i++){
            if(s2[i]!=z2[i]){
                return false;;
            }
        }
    }
    return true; 
};

/**測試
s = "abc"
s = "abac"
s = "eedede"
s = "deeee"
var z = validPalindrome(s);
console.log(z);
*/