笔记:
- 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;}
};