目录
题目描述:
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
说明:本题中,我们将空字符串定义为有效的回文串。
示例 1:
输入: "A man, a plan, a canal: Panama"
输出: true
示例 2:
输入: "race a car"
输出: false
解法:
class Solution {
public:
bool isPalindrome(string s) {
vector<char> mp(128, ' ');
for(int ch = 'a'; ch <= 'z'; ch++){
mp[ch] = ch;
mp[int(ch - 'a' + 'A')] = ch;
}
for(int ch = '0'; ch <= '9'; ch++){
mp[ch] = ch;
}
int l = 0, r = s.size() - 1;
while(l < r){
if(mp[s[l]] == ' '){
l++;
}else{
if(mp[s[r]] == ' '){
r--;
}else{
if(mp[s[l]] == mp[s[r]]){
l++;
r--;
}else{
return false;
}
}
}
}
return true;
}
};