class Solution {
public:
bool isPalindrome(string s) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
if (s.size() <= 1) return true;
int left = 0;
int right = s.size() - 1;
while (left < right)
{
while (!isAlphaNum(s[left]) && left < s.size()) ++left;
while (!isAlphaNum(s[right]) && right >= 0) --right;
if (left < right)
{
if (getLowerCaseOrNum(s[left]) != getLowerCaseOrNum(s[right]))
return false;
++left;
--right;
}
}
return true;
}
bool isAlphaNum(char c)
{
if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9'))
return true;
return false;
}
char getLowerCaseOrNum(char c)
{
if ((c >= 'a' && c <= 'z')) return c;
else if ((c >= 'A' && c <= 'Z'))
{
return 'a' + (c - 'A');
}
else if (c >= '0' && c <= '9')
return c;
}
};[Leetcode] Valid Palindrome
最新推荐文章于 2019-11-04 14:27:48 发布
本文提供了一个C++实现的字符串回文判断算法。该算法能够忽略非字母数字字符,并将大写字母转换为小写进行比较。通过双指针技术从两端向中间遍历字符串,高效地实现了回文字符串的验证。
1855

被折叠的 条评论
为什么被折叠?



