这题在以前就用C语言写过了,最近又拿出来用C++再写一遍。
class Solution { public: bool isPalindrome(string s) { int n = s.size(); //字符串的大小 int left = 0; //确定双指针左右边界 int right = n - 1; while (left < right) { while (left < right && !isalnum(s[left])) //确保不越界且跳过对符号的选择 { left++; } while (left < right && !isalnum(s[right])) { right--; } if(left < right) { if (tolower(s[left]) != tolower(s[right])) //大小写不同也可以认为相等,不妨都转换成小写 { return false; } } left++; right--; } return true; } };