Java教程

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

本文主要是介绍算法: 验证回文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;
    }
}
这篇关于算法: 验证回文680. Valid Palindrome II的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!