[LeetCode] Valid Palindrome
代码:
1 class Solution { 2 public: 3 bool isPalindrome(string s) { 4 transform(s.begin(), s.end(), s.begin(), ::tolower); 5 auto left = s.begin(); 6 auto right = prev(s.end()); 7 while(left < right) { 8 if(!::isalnum(*left)) 9 ++left; 10 else if(!::isalnum(*right)) 11 --right; 12 else if(*left != *right) 13 return false; 14 else{ 15 ++left; 16 --right; 17 } 18 } 19 return true; 20 } 21 };
杂记:
1. transform
std::transform applies the given function to a range and stores the result in another range, beginning at d_first.
例如代码
1 transform(s.begin(), s.end(), s.begin(), ::tolower);
把字符串的所有内容转换为小写
2. 其他方法一
正则表达式替换其他非字母表字符,然后判断
3. 其他方法二
正则替换后反转,判断是否相等