原题:
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;
}
};