题目描述:
给定一个非空字符串
s
,最多删除一个字符。判断是否能成为回文字符串。
示例:
代码:
class Solution {
public boolean validPalindrome(String s) {
int a=0;
int b=s.length()-1;
while(a<b){
if(s.charAt(a)==s.charAt(b)){
a++;
b--;
}
else{
boolean add=true;
boolean subtract=true;
for(int i=a+1,j=b;i<j;i++,j--){
if(s.charAt(i)!=s.charAt(j)){
add=false;
break;
}
}
if(!add){
for(int i=a,j=b-1;i<j;i++,j--){
if(s.charAt(i)!=s.charAt(j)){
subtract=false;
break;
}
}
}
return add||subtract;
}
}
return true;
}
}
运行结果:
解题思路:
按照顺序判断第一个与最后一个是否相同,如果出现不相同的情况,先将左面向后移一个,如果还不相同,左面恢复原来位置,右面向左移一个,如果还不相同,返回false,如果有一个相同,用for循环下去