简单算法
概:害,就是偶尔刷一刷简单的算法 记录一下。
题目
给定一个非空字符串 s,最多删除一个字符。判断是否能成为回文字符串(正反遍历结果相同)。
范例
- 输入:“abccba” 输出:true
- 输入 “abcbba” 输出:true
- 输入"abcbcca" 输出:false
java代码
public class Solution {
public boolean validPalindrome(String s) {
//Leetcode系统执行的方法
return validPalindrome2(s,0,s.length()-1,true);
}
private boolean validPalindrome2(String s, int a, int b,boolean r)
{
//用来检测的方法
while(true)
{
if(s.charAt(a)==s.charAt(b))
{
a++;
b--;
if(a>=b)
{
return true;
}
}
else
{
if(r)
{
return validPalindrome2(s,(a+1),b,false)||validPalindrome2(s,a,(b-1),false);
}
else
{
return false;
}
}
}
}
}