算法: 验证回文680. Valid Palindrome II

680. Valid Palindrome II

Given a string s, return true if the s can be palindrome after deleting at most one character from it.

Example 1:

Input: s = "aba"
Output: true

Example 2:

Input: s = "abca"
Output: true
Explanation: You could delete the character 'c'.

Example 3:

Input: s = "abc"
Output: false

Constraints:

  • 1 <= s.length <= 105
  • s consists of lowercase English letters.

头尾指针解法

class Solution {
    public boolean validPalindrome(String s) {
        char[] chars = s.toCharArray();
        int lo = 0, hi = chars.length - 1;
        while (lo < hi) {
            if (chars[lo] != chars[hi]) {
                return helper(chars, lo + 1, hi) || helper(chars, lo, hi - 1);
            }
            lo++;
            hi--;
        }
        return true;
    }
    
    private boolean helper(char[] chars, int lo, int hi) {
        while (lo < hi) {
            if (chars[lo] != chars[hi]) {
                return false;
            }
            lo++;
            hi--;
        }
        
        return true;
    }
}
上一篇:Codeforces Round #721 (Div. 2) B. Palindrome Game (easy and hard version) (思维 + 简单博弈)


下一篇:【题解】【老C的任务】