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.
去掉S中的无关字符,将大写字母转换为小写,之后就是简单的回文串判断。
自己写的C语言版的,可以实现效果,但是会提示超时
bool isPalindrome(char *s) { int j = 0; for(int i=0; i<strlen(s); i++){ if(s[i]>=‘0‘ && s[i]<=‘9‘ || s[i]>=‘a‘ && s[i]<=‘z‘ || s[i]>=‘A‘ && s[i]<=‘Z‘){ if(s[i]>=‘A‘ && s[i]<=‘Z‘){ s[j++] = s[i]-‘A‘+‘a‘; }else{ s[j++] = s[i]; } } } s[j] = ‘\0‘; if(j <= 1) return true; for(int i=0; i<strlen(s); i++){ if(s[i] != s[strlen(s)-i-1]){ return false; } } return true; }
网上找的C++版的,验证可以使用
class Solution { public: bool isPalindrome(string s) { string t = ""; for (int i = 0; i < s.length(); i++) { if (s[i] >= ‘a‘ && s[i] <= ‘z‘ || s[i] >= ‘0‘ && s[i] <= ‘9‘ || s[i] >= ‘A‘ && s[i] <= ‘Z‘) { if (s[i] >= ‘A‘ && s[i] <= ‘Z‘) { t += (s[i] - ‘A‘ + ‘a‘); } else { t += s[i]; } } } if (t == "") { return true; } for (int i = 0; i < t.length() / 2; i++) { if (t[i] != t[t.length() - i - 1]) { return false; } } return true; } };
时间: 2024-10-18 05:16:44