All Downloads are FREE. Search and download functionalities are using the official Maven repository.

g0601_0700.s0680_valid_palindrome_ii.Solution Maven / Gradle / Ivy

There is a newer version: 1.38
Show newest version
package g0601_0700.s0680_valid_palindrome_ii;

// #Easy #String #Greedy #Two_Pointers #2022_03_22_Time_10_ms_(61.31%)_Space_55.3_MB_(15.70%)

/**
 * 680 - Valid Palindrome II\.
 *
 * Easy
 *
 * 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.
**/
public class Solution {
    public boolean validPalindrome(String s) {
        int l = 0;
        int r = s.length() - 1;
        while (l < r) {
            if (s.charAt(l) != s.charAt(r)) {
                return isPalindrome(s.substring(l + 1, r + 1)) || isPalindrome(s.substring(l, r));
            }
            l++;
            r--;
        }
        return true;
    }

    private boolean isPalindrome(String s) {
        int l = 0;
        int r = s.length() - 1;
        while (l < r) {
            if (s.charAt(l) != s.charAt(r)) {
                return false;
            }
            l++;
            r--;
        }
        return true;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy