题目
给定一个非空字符串 s,最多删除一个字符。判断是否能成为回文字符串。链接
思路
头尾指针,当指向的元素不同时,有一次删除的机会,头指针后移或者尾指针前移,再遇到不相同返回false。
class Solution {
public boolean validPalindrome(String s) {
int start=0,end=s.length()-1;
while(start<end){
if(s.charAt(start)!=s.charAt(end)){
return helper(s,start+1,end)||helper(s,start,end-1);
}
start++;
end--;
}
return true;
}
boolean helper(String s,int i,int j){
while(i<j){
if(s.charAt(i)!=s.charAt(j)){
return false;
}
i++;
j--;
}
return true;
}
}