LeetCode 125. 驗證迴文串(C、C++、python)
阿新 • • 發佈:2018-12-18
給定一個字串,驗證它是否是迴文串,只考慮字母和數字字元,可以忽略字母的大小寫。
說明:本題中,我們將空字串定義為有效的迴文串。
示例 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