笔记:
- C++ 中,isalnum 函数用于检查一个字符是否是字母数字字符,isalnum 函数定义在 头文件中。
- 双指针法,双指针法是一种常用的算法技巧,特别适用于处理数组、字符串等线性数据结构中的问题。这种方法通常涉及到两个指针(或索引),它们以某种策略移动,从而简化了问题的解决过程。
- 利用字符的ascii码进行判断,ch >= ‘A’ && ch <= ‘Z’。
个人解答:
bool isPalindrome(string s) {
string s0;
for(char ch:s){
if (ch >= 'A' && ch <= 'Z') {
ch = ch + 32; // 将大写字母转换为小写字母
s0.append(string(1,ch));
}
else if((ch >= 'a' && ch <= 'z')||(ch >= '0' && ch <= '9')){
s0.append(string(1,ch));
}
else{
continue;
}
}
// 双指针法
int n=s0.size();
int left = 0, right = n - 1;
while (left < right) {
if (s0[left] != s0[right]) {
return false;
}
++left;
--right;
}
std::cout<<"s0="<<s0<<std::endl;
return 1;
}
标准写法:
class Solution {
public:
bool isPalindrome(string s) {
string sgood;
for (char ch: s) {
if (isalnum(ch)) {
sgood += tolower(ch);
}
}
int n = sgood.size();
int left = 0, right = n - 1;
while (left < right) {
if (sgood[left] != sgood[right]) {
return false;
}
++left;
--right;
}
return true;
}
};