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;}
}