给定一个字符串,确定它是否是回文,只考虑字母数字字符和忽略大小写。
例如:"A man, a plan, a canal: Panama"
是回文字符串。
"race a car"
不是回文字符串。
------------------------------------------------------------------------------------------
#include<iostream>
#include <algorithm>
using namespace std;
class Solution {
public:
bool isPalindrome(string s) {
if(s.empty())return true;
s.erase(remove_if(s.begin(),s.end(),::ispunct),s.end());//删除符号
s.erase(remove_if(s.begin(),s.end(),::isspace),s.end());//删除空格
if(s.empty())return true;
transform(s.begin(),s.end(),s.begin(),::tolower); //转小写
for(int i = 0; i < s.length()/2;i++)
{
if(s[i] != s[s.length()-i-1])return false;
}
return true;
}
};
![](https://i-blog.csdnimg.cn/blog_migrate/9003f2a017547aa2db8acf0ab2e92081.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/b1ff810f4cef052c84f91d9e66145a62.gif)
-----------------------------------------------------------------------------------------------------------------------------------------------
另外
s.erase(0,s.find_first_not_of(" "));//删除字符串头部空格 s.erase(s.find_last_not_of(" ") + 1);//删除字符串尾部空格