LeetCode in Net

125. Valid Palindrome

Easy

A phrase is a palindrome if, after converting all uppercase letters into lowercase letters and removing all non-alphanumeric characters, it reads the same forward and backward. Alphanumeric characters include letters and numbers.

Given a string s, return true if it is a palindrome, or false otherwise.

Example 1:

Input: s = “A man, a plan, a canal: Panama”

Output: true

Explanation: “amanaplanacanalpanama” is a palindrome.

Example 2:

Input: s = “race a car”

Output: false

Explanation: “raceacar” is not a palindrome.

Example 3:

Input: s = “ “

Output: true

Explanation: s is an empty string “” after removing non-alphanumeric characters. Since an empty string reads the same forward and backward, it is a palindrome.

Constraints:

Solution

public class Solution {
    public bool IsPalindrome(string s) {
        int i = 0;
        int j = s.Length - 1;
        bool res = true;
        while (res) {
            while (i < j && IsNotAlphaNumeric(s[i])) {
                i++;
            }
            while (i < j && IsNotAlphaNumeric(s[j])) {
                j--;
            }
            if (i >= j) {
                break;
            }
            char left = UpperToLower(s[i]);
            char right = UpperToLower(s[j]);
            if (left != right) {
                res = false;
            }
            i++;
            j--;
        }
        return res;
    }

    private bool IsNotAlphaNumeric(char c) {
        return (c < 'a' || c > 'z') && (c < 'A' || c > 'Z') && (c < '0' || c > '9');
    }

    private bool IsUpper(char c) {
        return c >= 'A' && c <= 'Z';
    }

    private char UpperToLower(char c) {
        if (IsUpper(c)) {
            c = (char)(c + 32);
        }
        return c;
    }
}
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy