680. 驗證回文字符串 Ⅱ
給定一個非空字符串 s,最多刪除一個字符。判斷是否能成為回文字符串。
- 示例 1:
輸入: s = “aba”
輸出: true
- 示例 2:
輸入: s = “abca”
輸出: true
解釋: 你可以刪除c字符。
- 示例 3:
輸入: s = “abc”
輸出: false
解題思路
使用雙指針匹配回文串,當遇到不匹配的兩個字符時,我們將兩個字符都刪除一次以后,遍歷剩余的字符串查看是否能組成回文字符串
代碼
class Solution {public boolean validPalindrome(String s) {int l=0,n=s.length(),r=n-1;while(l<r){if(s.charAt(l)!=s.charAt(r)){return toVlidPalindrome(s,l+1,r)||toVlidPalindrome(s,l,r-1);}r--;l++;}return true;}public boolean toVlidPalindrome(String s,int l,int r) {while(l<r){if(s.charAt(l)!=s.charAt(r))return false;l++;r--;}return true;}
}