680 驗證回文字串2

2021-10-24 14:11:30 字數 1005 閱讀 6488

給定乙個非空字串 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...