题目描述:
标签:贪心 双指针 字符串
给定一个非空字符串
s
,最多删除一个字符。判断是否能成为回文字符串。
代码:
思路分析:
1、定义双指针left=0,right=s.length()-1指向字符串的两端
2、判断两个指针指向的元素是否相等,相等则left++,right--,继续判断;
如果不等,则删除一个字符,判断从(left+1,right)子字符串或者(left,right-1)子字符串是不是回文字符串(单独写一个函数判断是不是回文字符串)
class Solution {
public boolean validPalindrome(String s) {
int left = 0;
int right = s.length() - 1;
while(left < right){
if(s.charAt(left) == s.charAt(right)){
left++;
right--;
}else{
return isPalindrome(s,left+1,right) || isPalindrome(s,left,right-1);
}
}
return true;
}
public boolean isPalindrome(String s, int begin, int end){
while(begin < end){
if(s.charAt(begin) != s.charAt(end)){
return false;
}
begin++;
end--;
}
return true;
}
}