给定一个非空字符串 s
,请判断如果 最多 从字符串中删除一个字符能否得到一个回文字符串。
示例 1:
输入: s = "aba"
输出: true
示例 2:
输入: s = "abca"
输出: true
解释: 可以删除 "c" 字符 或者 "b" 字符
示例 3:
输入: s = "abc"
输出: false
提示:
1 <= s.length <= 105
s
由小写英文字母组成
//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
public boolean validPalindrome(String s) {
if (s == null || s.length() == 0) {
return true;
}
int start = 0;
int end = s.length() - 1;
boolean used = false;
int startTemp = -1;
int endTemp = -1;
while (start < end) {
if (s.charAt(start) != s.charAt(end)) {
if (!used) {
if (startTemp == -1) {
startTemp = start;
endTemp = end;
start++;
continue;
} else {
start = startTemp;
end = endTemp;
end--;
used = true;
continue;
}
} else {
return false;
}
}
start++;
end--;
}
return true;
}
}
//leetcode submit region end(Prohibit modification and deletion)