leetcode 原题链接:https://leetcode.com/problems/valid-palindrome/
Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases.
For example,
"A man, a plan, a canal: Panama"
is a palindrome.
"race a car"
is not a palindrome.
简要分析:此题比较简单,只要在判断字母字符是否相同的时候 注意判断大小写不同的情况即可。我的做法是都将其转换成小写字符,直接进行判断。
实现代码:
#include <iostream>
#include <vector>
#include <string>
#include <ctype.h>
using namespace std;
class Solution
{
public:
bool isPalindrome(string s)
{
int left = 0, right = s.size() - 1;
while (left < right)
{
if (isalpha(s[left]) || isalnum(s[left]))
{
if (isalpha(s[right]) || isalnum(s[right]))
{
if (tolower(s[left]) != tolower(s[right]))
{
return false;
} else
{
left++; right--;
}
} else
{
right--;
}
} else
{
left++;
}
}
return true;
}
char tolower(char ch)
{
if (ch >= 65 && ch <= 90)
{
ch = ch - 'A' + 'a';
}
return ch;
}
};
int main()
{
string s = "1a2";//"a";//"race a car";//"A man, a plan, a canal: Panama";
Solution st;
cout << st.isPalindrome(s) << endl;
return 0;
}