思路:题目中的关键是删除一个字符,在使用双指针遍历字符串时,如果字符串不相等,我们既可以删除左字符,也可以删除右字符,只需要取两种情况的或即可。
class Solution {
public boolean validPalindrome(String s) {
for(int i=0,j=s.length()-1;i<j;i++,j--){
if(s.charAt(i)!=s.charAt(j)){
//不相等时可删除左字符,也可删除右字符
return isPalindrome(s,i+1,j)|isPalindrome(s,i,j-1);
}
}
return true;
}
private boolean isPalindrome(String s,int i,int j){
while(i<j){
if(s.charAt(i++)!=s.charAt(j--)){
return false;
}
}
return true;
}
}