试题:
Given a non-empty string s, you may delete at most one character. Judge whether you can make it a palindrome.
Example 1:
Input: “aba”
Output: True
Example 2:
Input: “abca”
Output: True
Explanation: You could delete the character ‘c’.
Note:
The string will only contain lowercase characters a-z. The maximum length of the string is 50000.
代码:
我们先考虑不用删除就能成回环,如果发现不满足要求,那么就转向考虑能不能删除一个字符完成回环。
class Solution {
public boolean validPalindrome(String s) {
int l=0, r=s.length()-1;
while(l<r){
if(s.charAt(l)!=s.charAt(r)){
return isPalindrome(s, l+1, r) || isPalindrome(s, l, r-1);
}
l++;r--;
}
return true;
}
public boolean isPalindrome(String s, int l, int r){
while(l<r){
if(s.charAt(l)!=s.charAt(r)){
return false;
}
l++;r--;
}
return true;
}
}