41 lines
1.1 KiB
Java
41 lines
1.1 KiB
Java
|
|
package All;
|
|||
|
|
/**
|
|||
|
|
* 题目: 680. 验证回文串 II
|
|||
|
|
* 描述:给你一个字符串 s,最多 可以从中删除一个字符。
|
|||
|
|
* 请你判断 s 是否能成为回文字符串:如果能,返回 true ;否则,返回 false 。
|
|||
|
|
|
|||
|
|
示例 1:
|
|||
|
|
输入:s = "aba"
|
|||
|
|
输出:true
|
|||
|
|
|
|||
|
|
* 链接:https://leetcode.cn/problems/valid-palindrome-ii/
|
|||
|
|
*/
|
|||
|
|
public class ValidPalindrome {
|
|||
|
|
public boolean validPalindrome(String s) {
|
|||
|
|
int l = 0, r = s.length() - 1;
|
|||
|
|
while (l < r) {
|
|||
|
|
if (s.charAt(l) == s.charAt(r)) {
|
|||
|
|
l++; r--;
|
|||
|
|
} else {
|
|||
|
|
// 尝试跳过左边或右边的字符
|
|||
|
|
return isPalindrome(s, l + 1, r) || isPalindrome(s, l, r - 1);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private boolean isPalindrome(String s, int l, int r) {
|
|||
|
|
while (l < r) {
|
|||
|
|
if (s.charAt(l++) != s.charAt(r--)) return false;
|
|||
|
|
}
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public static void main(String[] args) {
|
|||
|
|
ValidPalindrome solution = new ValidPalindrome();
|
|||
|
|
String s="bddb";
|
|||
|
|
solution.validPalindrome(s);
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
}
|