给定一个非空字符串 s,最多删除一个字符。判断是否能成为回文字符串。
示例 1:
输入: s = "aba"
输出: true
示例 2:
输入: s = "abca"
输出: true
解释: 你可以删除c字符。
示例 3:
输入: s = "abc"
输出: false
提示:
1 <= s.length <= 105s由小写英文字母组成
public static boolean validPalindrome(String s) {
if(null == s){
return false;
}
int length = s.length();
if(length == 1){
return true;
}
for (int i = 0,j=length-1; i < length && i<j; i++,j--){
if(s.charAt(i) != s.charAt(j)){
if(!validPalindrome(s,i+1,j) && !validPalindrome(s,i,j-1)){
return false;
}
if(validPalindrome(s,i+1,j) || validPalindrome(s,i,j-1)){
return true;
}
}
}
return true;
}
private static boolean validPalindrome(String s,int i,int j) {
for(;i<j;i++,j--){
if(s.charAt(i) != s.charAt(j)){
return false;
}
}
return true;
}