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;}
};