【双指针】LeetCode 680. 验证回文串 II
题目链接
思路
题目允许删除一个字符,那么当我们判断到一对字符不相等时,可以分别判断区间 \([left + 1, right]\) 和区间 \([left, right - 1]\) 是否能构成回文串,只要有一个能构成回文串,则合法。
代码
class Solution {
public boolean validPalindrome(String s) {
int left = 0;
int right = s.length() - 1;
boolean chance = true;
while(left < right){
if(s.charAt(left) != s.charAt(right)){
return validSubPalindrome(s, left + 1, right) || validSubPalindrome(s, left, right - 1);
}
left++;
right--;
}
return true;
}
public boolean validSubPalindrome(String s, int left, int right){
while(left < right){
if(s.charAt(left) != s.charAt(right)){
return false;
}
left++;
right--;
}
return true;
}
}