双指针,遇到除数字和字母外的字符跳过。
代码如下:
class Solution {
public:
bool isPalindrome(string s) {
int left = 0;
int right = s.length() - left -1;
transform(s.begin(),s.end(),s.begin(),::tolower);
while (left < right)
{
if ((s[left] >= 'a' && s[left] <= 'z') || (s[left] >= '0' && s[left] <= '9'))
{
if ((s[right] >= 'a' && s[right] <= 'z') || (s[right] >= '0' && s[right] <= '9'))
{
if (s[left] == s[right])
{
++left;
--right;
}
else
return false;
}
else
right--;
}
else
left++;
}
return true;
}
};
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)