给定一个非空字符串 s
,请判断如果 最多 从字符串中删除一个字符能否得到一个回文字符串。
示例 1:
输入: s = "aba" 输出: true
示例 2:
输入: s = "abca" 输出: true 解释: 可以删除 "c" 字符 或者 "b" 字符
示例 3:
输入: s = "abc" 输出: false
提示:
1 <= s.length <= 105
s
由小写英文字母组成
class Solution {
public boolean validPalindrome(String s) {
int i=0;
int j=s.length()-1;
while(s.charAt(i)==s.charAt(j)&&i<=j){
i++;
j--;
}
if(i>=j){
return true;
}
return reverse(i+1,j,s)||reverse(i,j-1,s);
}
public boolean reverse(int i,int j,String s){
while(s.charAt(i)==s.charAt(j)&&i<=j){
i++;
j--;
if(i>s.length()-1||j<0){
break;
}
}
return i>=j;
}
}