Leetcode链接: link.
解题思路:
①首先写了一个判断是否为字母和数字的子函数,方便后面的调用
②直接上来就把我遇见的大写字母转换为小写,题目告诉我们不在乎大小写,方便后面判断是否相等
class Solution {
public:
bool isLetter(char ch)
{
if((ch >= '0' && ch<= '9')
|| (ch >= 'a' && ch<= 'z')
|| (ch >= 'A' && ch<= 'Z'))
{
return true;
}
return false;
}
bool isPalindrome(string s) {
//我要改变的是字符串本身的大小写,所以要加&
for(auto& ch : s)
{
if(ch >= 'A' && ch <= 'Z')
ch += 32;
}
int left = 0,right = s.size()-1;
while(left < right)
{
while(left < right && !isLetter(s[left]))
++left;
while(left < right && !isLetter(s[right]))
--right;
if(s[left] != s[right])
{
return false;
}
++left;
--right;
}
return true;
}
};