思路:用另外一个字符串按原字符串的书按需记录原字符串中的字母和数字。
然后从两边开始比较对应位置的字符是否相等即可。当遇到大写字符的时候,需要将大写字母变换为对应的小写字母。
class Solution {
public:
bool isPalindrome(string s) {
string t;
for (int i = 0; i<s.size(); ++i)
{
if ((s[i] >= 'a' && s[i] <= 'z') || (s[i] >= 'A' && s[i] <= 'Z') || (s[i] >= '0' && s[i] <= '9'))
t += s[i];
}
int r = t.size() - 1, l = 0;
while (l <= r)
{
char cl = (t[l] >= 'A' && t[l] <= 'Z') ? (t[l] + 32) : t[l];
char cr = (t[r] >= 'A' && t[r] <= 'Z') ? (t[r] + 32) : t[r];
l++, r--;
if (cl != cr) return false;
}
return true;
}
};