125.验证回文串
思路
双指针扫描数组,不相等返回false,否则返回true
代码一
class Solution {
public:
bool isPalindrome(string s) {
int les=s.size();
for(int i=0;i<les;i++){
s[i]=tolower(s[i]);
}
string res;
for(int i=0;i<les;i++){
if((s[i]>='a'&&s[i]<='z')||(s[i]>='0'&&s[i]<='9'))
{
res.push_back(s[i]);
}
}
int k=res.size();
//if(!k) return false;
bool flag=true;
for(int i=0;i<k;i++){
if(res[i]!=res[k-i-1]){
flag=false;
break;
}
}
return flag;
}
};
代码二
isalnum
函数用于检查给定的字符是否是字母或数字字符。
在代码 sgood_rev(sgood.rbegin(), sgood.rend())
中,起到反转字符串的函数是 rbegin()
和 rend()
。这两个函数是 C++ 标准库中 std::string
类的成员函数,用于返回反向迭代器。
rbegin()
返回一个反向迭代器,指向字符串的最后一个字符。rend()
返回一个反向迭代器,指向字符串的第一个字符之前的理论元素。
class Solution {
public:
bool isPalindrome(string s) {
string sgood;
for (char ch: s) {
if (isalnum(ch)) {
sgood += tolower(ch);
}
}
string soo(sgood.rbegin(), sgood.rend());
return sgood == soo;
}
};