原题:
Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases.
Note: For the purpose of this problem, we define empty string as valid palindrome.
Example 1:
Input: "A man, a plan, a canal: Panama" Output: trueExample 2:
Input: "race a car" Output: false
题意是判断是否回文,但是很蠢的是要跳过标点空格,所以时间都消耗在if语句上了,结果:
Success
Runtime: 4 ms, faster than 99.89% of C++ online submissions for Valid Palindrome.
Memory Usage: 9.3 MB, less than 45.65% of C++ online submissions for Valid Palindrome.
代码:
class Solution {
public:
bool isPalindrome(string s) {
string::iterator i;
string::iterator j;
i=s.begin();j=s.end();j--;
while(i<=j){
if(*i<'0'||*i>'z'||(*i>'9'&&*i<'A')||(*i>'Z'&&*i<'a')){i++;continue;}
if(*j<'0'||*j>'z'||(*j>'9'&&*j<'A')||(*j>'Z'&&*j<'a')){j--;continue;}
if(*i!=*j){
if((*i-*j==32||*i-*j==-32)&&*i>='A'&&*i<='z'&&*j>='A'&&*j<='z'){i++;j--;continue;}
return false;}
i++;
j--;
}
return true;
}
};
博客围绕判断字符串是否为回文展开,题目要求仅考虑字母数字字符并忽略大小写,空字符串视为有效回文。使用C++实现,需跳过标点空格,最终运行成功,运行时间4ms,击败99.89%的在线提交者。

1850

被折叠的 条评论
为什么被折叠?



