1.解答之前的碎碎念:
这个题还蛮简单的,大概就是考研机试第一题的水平,所以就不写解法了~
2.问题描述:
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
说明:本题中,我们将空字符串定义为有效的回文串。
示例 1:
输入: "A man, a plan, a canal: Panama"
输出: true
示例 2:
输入: "race a car"
输出: false
3.解答思路:
需要注意的一点:start++或end--后要记得continue。
4.答案:
class Solution {
public:
bool isPalindrome(string s) {
int start = 0;
int end = s.length() - 1;
while(start < end)
{
if(s[start] < 48 || (s[start] > 57 && s[start] < 65) || (s[start] > 91 && s[start] < 97) || s[start] > 122)
{
start++;
continue;
}
if(s[end] < 48 || (s[end] > 57 && s[end] < 65) || (s[end] > 91 && s[end] < 97) || s[end] > 122)
{
end--;
continue;
}
if(s[start] >= 48 && s[start] <= 57)
{
if(s[end] >= 48 && s[end] <= 57)
{
if(s[start] == s[end])
{
start++;
end--;
continue;
}
else return false;
}
else return false;
}
if((s[start] >= 65 && s[start] <= 91) || (s[start] >= 97 && s[start] <= 122))
{
if(s[start] == s[end] || s[start] - 32 == s[end] || s[start] == s[end] - 32)
{
start++;
end--;
continue;
}
else return false;
}
}
return true;
}
};