文章目录

  • ​​1.题目​​
  • ​​2.代码​​

1.题目

  • ​​[LeetCode] Valid Palindrome 验证回文字符串​​
  • 思路:
    验证回文字符串是比较常见的问题,所谓回文,就是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。但是这里,加入了空格和非字母数字的字符,增加了些难度,但其实原理还是很简单:只需要建立两个指针,left和right, 分别从字符的开头和结尾处开始遍历整个字符串,如果遇到非字母数字的字符就跳过,继续往下找,直到找到下一个字母数字或者结束遍历,如果遇到大写字母,就将其转为小写。等左右指针都找到字母数字时,比较这两个字符,若相等,则继续比较下面两个分别找到的字母数字,若不相等,直接返回false;
    我们也可以用系统自带的判断是否是字母、数字字符的判断函数isalnum;

2.代码

class Solution
{
public:
bool isPalindrome(string s)
{
int left=0;
int right=s.size()-1;
while(left<right)
{
if (!isanum(s[left])) left++;
else if(!isanum(s[right])) right--;
else if (s[left] != s[right]) return false;
else
{
left++,right--;
}
}
return true;
}
};