验证回文字符串Ⅱ

问题陈述

给定一个非空字符串 s最多删除一个字符。判断是否能成为回文字符串。

算法实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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;//回文
}
public boolean isPalindrome(String s,int i,int j){
while(i<j){
if(s.charAt(i++)!=s.charAt(j--)){
return false;
}
}
return true;
}
}