[LeetCode]125. Valid Palindrome
题目描述
思路
1.筛选去掉无用字符 2.判断当前字符串是否回文串
代码
#include <iostream>
#include <
string>
using namespace std;
class Solution {
public:
bool isPalindrome(
string s) {
/*
int src =
0, cur =
0;
while (src < s.size()) {
if ((s[src] >=
'0' && s[src] <=
'9') || (s[src] >=
'a' && s[src] <=
'z') || (s[src] >=
'A' && s[src] <=
'Z')) {
if (s[src] >=
'A' && s[src] <=
'Z')
s[cur++] = s[src++] - (
'A' -
'a');
else
s[cur++] = s[src++];
}
else
++src;
}
s.resize(cur);
int start =
0,
end = s.size();
while (start <
end) {
if (s[start] == s[
end -
1]) {
start++;
end
}
else
return false;
}
return true;
*/
for (int i =
0, j = s.size() -
1; i < j; i++, j
while (isalnum(s[i]) ==
false && i < j) i++; // Increment left pointer
if not alphanumeric
while (isalnum(s[j]) ==
false && i < j) j
if (toupper(s[i]) != toupper(s[j]))
return false; // Exit
and return error if not match
}
return true;
}
};
int main() {
Solution s;
cout << s.isPalindrome(
"race a car") << endl;
system(
"pause");
return 0;
}