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); } }