680.验证回文字符串 Ⅱ
给定一个非空字符串 s,最多删除一个字符。判断是否能成为回文字符串。
示例 1:
输入: “aba”
输出: True
示例 2:
输入: “abca”
输出: True
解释: 你可以删除c字符。
用头尾指针的移动来判断回文串,如果不相等,由于可以删去一个字符,可以选择删去头指针的字符或尾指针的字符,只能删一次,所以回文串只有两种情况:删除头的字符后是回文字符串或删除尾的字符是回文串
class Solution {
int flag=0;
public boolean validPalindrome(String s) {
if(s.length()==1)
return true;
else{
int i=0,j=s.length()-1;
while(i<j)
{
if(s.charAt(i)==s.charAt(j))
{
i++;j--;
}
else if(flag==0){
flag=1;
return validPalindrome(s.substring(i+1,j+1))||validPalindrome(s.substring(i,j));
}
else return false;
}
return true;
}
}
}