题目描述:
给定一个非空字符串 s
,最多删除一个字符。判断是否能成为回文字符串。
解题思路:
- 使用双指针,一个指向头,一个指向尾,如果两者不相同了,则可以将尾部的往前挪一个,或者首部的往后挪一个,判断这两种情况
这两种已经相当于删除了一个字符,如果不是回文字符串,说明删除一个字符满足不了要求
class Solution {
public boolean validPalindrome(String s) {
int i = -1;
int j = s.length();
while(++i<--j){
if(s.charAt(i)!=s.charAt(j))
return isPalindrome(s,i+1,j)||isPalindrome(s,i,j-1);
}
return true;
}
public boolean isPalindrome(String s,int i,int j){
while(i<j){
if(s.charAt(i++)!=s.charAt(j--))
return false;
}
return true;
}
}