解题思路
从两端开始往中间遍历,遇到不是回文的,就判断去掉之后是不是回文,这里可以去掉左边的也可以去掉右边的
代码
package strings;
public class validPalindrome {
public static boolean validPalindrome(String s) {
int length = s.length();
for(int i = 0; i < length;){
if(s.charAt(i) == s.charAt(length-i-1)){
i++;
}else{
return isPalindrome(s.substring(i,length-i-1)) || isPalindrome(s.substring(i+1, length-i));
}
}
return true;
}
public static boolean isPalindrome(String s){
int start = 0;
int end = s.length() - 1;
while(start <= end){
if(s.charAt(start++) == s.charAt(end)){
end--;
}else{
return false;
}
}
return true;
}
public static void main(String[] args) {
String s = "abca";
System.out.println(validPalindrome.isPalindrome(s));
System.out.println(validPalindrome.validPalindrome(s));
}
}