public class ValidPalindrome {
//判断是否为回文字符串
public static boolean isPalindrome(String s,int i,int j){
while(i<j){
if(s.charAt(i++)!=s.charAt(j--)){
return false;
}
}
return true;
}
public static boolean validPalindrome(String s){
//这里设置i=-1和j=s.length()是为了和下面的循环配合,使循环从素组左右边界遍历
int i=-1;
int j=s.length();
//这里的++i和--j是为了使while和if语句中的i,j值相同,先自增,再对while和if语句整体操作
while(++i<--j){
if(s.charAt(i)!=s.charAt(j)){
//为什么这样返回能判断?例如字符串abcddcbfa,左右两边从第二个数开始不同,
//所以就是bcddcb||cddcbf,有其中一个是回文字符串即可,因为f可以减掉
return(isPalindrome(s,i,j-1)||isPalindrome(s,i+1,j));
}
}
return true;
}
public static void main(String[] args){
String s="abcddcbfa";
System.out.println(validPalindrome(s));
String a="qwer";
System.out.println(validPalindrome(a));
}
}