leetcode,680题【验证回文字符串Ⅱ】
验证回文字符串Ⅱ
- 问题描述
- 测试用例
- 算法
问题描述
给定一个非空字符串 s,最多删除一个字符。判断是否能成为回文字符串。
测试用例
示例 1:
输入: s = "aba"
输出: true
示例 2:
输入: s = "abca"
输出: true
解释: 你可以删除c字符。
示例 3:
输入: s = "abc"
输出: false
算法
//例子:"abdda"
class Solution {
public boolean validPalindrome(String s) {
int i = 0;
int j = s.length() - 1;
while(i < j) {
if(s.charAt(i) != s.charAt(j)) {
//判断(i+1, j)或者(i, j-1)是不是回文串就行了
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)) {
return false;
}
i++;
j--;
}
return true;
}
}