最多删除一个字符得到回文
题目:给定一个字符串,请判断如果最多从字符串中删除一个字符能不能得到一个回文字符串。
思路:从两端开始向里逐步比两个字符是不是相同,如果相同,则继续移动继续比较,如果不相同,按照要求删除一个字符之后再比较其他两个字符就能形成一个回文。
public boolean validPalindrome(String s){
int start = 0;
int end = s.length() - 1;
for (; start < s.length() / 2; start++, end--){
if (s.charAt(start) != s.charAt(end)){
break;
}
}
return start == s.length() / 2 || isPalind(s, start, end -1) || isPalind(s, start + 1, end);
}
private boolean isPalind(String s, int start, int end){
while (start < end){
if (s.charAt(start) != s.charAt(end)){
break;
}
start++;
end--;
}
return start >= end;
}