给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
说明:本题中,我们将空字符串定义为有效的回文串。
示例 1:
输入: "A man, a plan, a canal: Panama" 输出: true
示例 2:
输入: "race a car" 输出: false
方法一:定义头尾指针,从头尾遍历判断字符是否相等(非数字/字符则跳过)。
方法二:
class Solution {
public:
bool isPalindrome(string s) {
if(s.size() == 0)
return true;
int media = 'A' - 'a';
string str = "";
for(int i = 0; i < s.size(); i++)
{
if(s[i] >= '0' && s[i] <= '9' || s[i] >= 'a' && s[i] <= 'z' || s[i] >= 'A' && s[i] <= 'Z')
{
if(s[i] >= 'A' && s[i] <= 'Z')
str += (s[i] - media);
else
str += s[i];
}
}
int len = str.size();
for(int i = 0; i < len / 2; i++)
{
if(str[i] != str[len - 1 - i])
return false;
}
return true;
}
};