給定乙個非空字串 s,最多刪除乙個字元。判斷是否能成為回文字串。
示例 1:
輸入: "aba"
輸出: true
示例 2:
輸入: "abca"
輸出: true
解釋: 你可以刪除c字元。
注意:字串只包含從 a-z 的小寫字母。字串的最大長度是50000。
思考
其實大的思路和驗證回文字串1相似,前後兩個指標,依次一一對比,然後再向中間挪動。
但可以刪除乙個字元,就意味著遇到不相等的時候,要再給一次機會。
不相等的原因可能有兩種情況
1.是前面的那個導致不相等,所以我們跳過當前的left,從left+1到right比較是不是回文串
2.是後面導致的不相等,跳過當前right,從left到right-1比較。
**實現
/**
* @param s
* @return
*/ var validpalindrome = function(s)
left++
right--
}return true
}let left = 0
let right = s.length-1
while (left < right)
//s[left],s[right]相等的話
left++
right--
}return true
};
知識1.這裡為什麼要把判斷回文串封裝成乙個函式?因為比較(left+1,right)和(left,right-1)的**是一樣的,避免重複性。
2.當檢測到不相等的時候,兩種情況有一種通過了,就可以返回true。
680 驗證回文字串
給定乙個非空字串 s,最多刪除乙個字元。判斷是否能成為回文字串。示例 1 輸入 aba 輸出 true 示例 2 輸入 abca 輸出 true 解釋 你可以刪除c字元。注意 字串只包含從 a z 的小寫字母。字串的最大長度是50000。分析 使用雙指標,在第乙個不相等的位置略過左邊或右邊的乙個字元...
680 驗證回文字串
給定乙個非空字串 s,最多刪除乙個字元。判斷是否能成為回文字串。示例 1 輸入 aba 輸出 true 示例 2 輸入 abca 輸出 true 解釋 你可以刪除c字元。注意 字串只包含從 a z 的小寫字母。字串的最大長度是50000。class solution int i 0,j len 1 ...
680 驗證回文字串
給定乙個非空字串 s,最多刪除乙個字元。判斷是否能成為回文字串。示例 1 輸入 aba 輸出 true 示例 2 輸入 abca 輸出 true 解釋 你可以刪除c字元。注意 字串只包含從 a z 的小寫字母。字串的最大長度是50000。class solution object defvalidp...