1. 程式人生 > >LeetCode 125. 驗證迴文串(C、C++、python)

LeetCode 125. 驗證迴文串(C、C++、python)

給定一個字串,驗證它是否是迴文串,只考慮字母和數字字元,可以忽略字母的大小寫。

說明:本題中,我們將空字串定義為有效的迴文串。

示例 1:

輸入: "A man, a plan, a canal: Panama"
輸出: true

示例 2:

輸入: "race a car"
輸出: false

C

bool isPalindrome(char* s) 
{
    int n=strlen(s);
    if(n==0)
    {
        return true;
    }
    char* res=(char*)malloc(sizeof(int)*(n+1));
    int k=0;
    for(int i=0;i<n;i++)
    {
        if(s[i]>='0' && s[i]<='9' || s[i]>='a' && s[i]<='z')
        {
            res[k++]=s[i];
        }
        if(s[i]>='A' && s[i]<='Z')
        {
            res[k++]=(s[i]+32);
        }   
    }
    res[k]='\0';
    for(int i=0;i<k;i++)
    {
        if(res[i]!=res[k-1-i])
        {
            return false;
        }
    }
    return true;
}

C++

class Solution {
public:
    bool isPalindrome(string s) 
    {
        int n=s.length();
        if(n==0)
        {
            return true;
        }
        string temp="";
        for(int i=0;i<n;i++)
        {
            if(s[i]>='0' && s[i]<='9' || s[i]>='a' && s[i]<='z')
            {
                temp+=s[i];
            }
            if(s[i]>='A' && s[i]<='Z')
            {
                temp+=(s[i]+32);
            }           
        }
        int m=temp.size();
        for(int i=0;i<m/2;i++)
        {
            if(temp[i]!=temp[m-1-i])
            {
                return false;
            }
        }
        return true;
    }
};

python

class Solution:
    def isPalindrome(self, s):
        """
        :type s: str
        :rtype: bool
        """
        n=len(s)
        if n==0:
            return True
        temp=""
        for i in range(0,n):
            if s[i]>='0' and s[i]<='9' or s[i]>='a' and s[i]<='z':
                temp+=s[i]
            if s[i]>='A' and s[i]<='Z':
                #temp+=chr(ord(s[i])+32)
                temp+=s[i].lower()
        m=len(temp)
        for i in range(0,m//2):
            if temp[i]!=temp[m-1-i]:
                return False
        return True