【JS】 驗證迴文字串 Ⅱ
阿新 • • 發佈:2018-12-20
給定一個非空字串 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); */