思路:
第一个是我写的耿直版本…第二个是用C API.
void strip(string& input) {
string str = "";
for (int i = 0; i < input.length(); i++) {
if (input[i] >= 'a' && input[i] <= 'z'
|| input[i] >= '0' && input[i] <= '9')
str += input[i];
else if (input[i] >= 'A' && input[i] <= 'Z') {
int diff = 'A' - 'a';
str += (char)(input[i] - diff);
}
}
swap(input, str);
}
bool isPalindrome(string s) {
if (s == "") return true;
strip(s);
for (int i = 0; i <= s.length() / 2; i++) {
if (s[i] != s[s.length() - i - 1])
return false;
}
return true;
}
bool isPalindrome(string s) {
int start = 0, end = s.length() - 1;
while (start < end) {
if (! isalnum(s[start])) start++;
else if (! isalnum(s[end])) end--;
else {
if (tolower(s[start++]) != tolower(s[end--]))
return false;
}
}
return true;
}