题目描述
判断题目给出的字符串是不是回文,仅考虑字符串中的字母字符和数字字符,并且忽略大小写
例如:"A man, a plan, a canal: Panama"是回文
"race a car"不是回文
注意:
你有没有考虑过字符串可能为空?这是面试时应该提出的一个好问题。
针对这个问题,我们定义空字符串是回文
class Solution {
public:
bool isPalindrome(string s) {
if(s.size() == 0)
return true;
vector<char> res;
int len = s.size();
for(int i = 0; i < len; i++){ //遍历每个字符,将其加入容器中
if(s[i] >= 'a' && s[i] <= 'z')
res.push_back(s[i]);
if(s[i] >= 'A' && s[i] <= 'Z') //处理大写字母
res.push_back(s[i] + 'a' - 'A');
if(s[i] >= '0' && s[i] <= '9')
res.push_back(s[i]);
}
vector<char> tmp = res;
reverse(tmp.begin(), tmp.end()); //翻转tmp
len = res.size();
for(int i = 0; i < len; i++){ //比较
if(res[i] != tmp[i])
return false;
}
return true;
}
};