LeetCode-125.Valid Palindrome

来源:互联网 发布:网页牛牛游戏源码 编辑:程序博客网 时间:2024/05/21 07:01

https://leetcode.com/problems/valid-palindrome/

Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases.

For example,
"A man, a plan, a canal: Panama" is a palindrome.
"race a car" is not a palindrome.

Note:
Have you consider that the string might be empty? This is a good question to ask during an interview.

For the purpose of this problem, we define empty string as valid palindrome.

“手动”判断

public class Solution {    public bool IsPalindrome(string s)     {        if (s == null)            return true;        int p1 = 0, p2 = s.Length - 1;        while (p1<p2)        {            while (!isAlphanumeric(s[p1]) && p1 < p2)                p1++;            while (!isAlphanumeric(s[p2]) && p1 < p2)                p2--;            if (!((s[p1] == s[p2])|| isEqual(s[p1],s[p2]) || isEqual(s[p2], s[p1])))                return false;            p1++;            p2--;        }        return true;    }    private bool isAlphanumeric(char c)    {        if ((48 <= c && c <= 57) || (65 <= c && c <= 90) || (97 <= c && c <= 122))            return true;        return false;    }            private bool isEqual(char c1, char c2)    {        if (65 <= c1 && c1 <= 90 && c2 == c1 + 32)            return true;        return false;    }}

使用内置char函数

public bool IsPalindrome(string s)     {        if (s == null)            return true;        int p1 = 0, p2 = s.Length - 1;        while (p1<p2)        {            while (!Char.IsLetterOrDigit(s[p1]) && p1 < p2)                p1++;            while (!Char.IsLetterOrDigit(s[p2]) && p1 < p2)                p2--;            if (Char.ToLower(s[p1])!= Char.ToLower(s[p2]))                return false;            p1++;            p2--;        }        return true;    }


0 0
原创粉丝点击