代码如下:
/**
* 贪心算法
*
* 设置双指针从字符串两边往中间搜索
* 字母相同则指针继续靠拢
* 如果不同,根据题意可以删除一个字符,则只移动一个指针,判断子字符串是否满足条件
* 即判断(i+1, j) || (i, j+1) 是否满足,如果还不满足,则不是
*
* Code by java
*/
class Solution {
public boolean validPalindrome(String s) {
int i = 0, j = s.length() - 1;
while (i < j) {
if(s.charAt(i) != s.charAt(j)) {
return isValid(s, i + 1, j) || isValid(s, i, j - 1);
}
i++;
j--;
}
return true;
}
public boolean isValid(String s, int i, int j) { //判断是否满足回文字符串
while (i < j) {
if(s.charAt(i) == s.charAt(j)) {
i++;
j--;
} else {
return false;
}
}
return true;
}
// public static void main(String[] args) {
// String a = new String("abca");
// Solution kk = new Solution();
// System.out.println(kk.validPalindrome(a));
// }
}