题目:判断一个字符串是否回文。有效的字符包括英文和数字
分析:前后判断。。
答案:
class Solution {
public:
bool isPalindrome(string s) {
if (s.empty())
return true;
int leftIdx = 0;
int rightIdx = s.size() - 1;
s = toLowerCase(s);
while (leftIdx < rightIdx)
{
if (!isABC123(s[leftIdx]))
{
leftIdx++;
}
else if (!isABC123(s[rightIdx]))
{
rightIdx--;
}
else if (isABC123(s[leftIdx]) && isABC123(s[rightIdx]) && s[rightIdx] != s[leftIdx])
return false;
else
{
leftIdx++;
rightIdx--;
}
}
return true;
}
string toLowerCase( string s)
{
string result;
for (int i = 0; i < s.size(); i++)
{
if (s[i] <= 'Z' && s[i] >= 'A')
result += s[i] - 'A' + 'a';
else
result += s[i];
}
return result;
}
bool isABC123(char c)
{
if ((c <= 'z' && c >= 'a') ||(c <= '9' && c >= '0') )
return true;
else
return false;
}
};