text: // Valid Palindrome
  // 时间复杂度O(n)，空间复杂度O(1)
  class Solution {
  public:
      bool isPalindrome(string s) {
          transform(s.begin(), s.end(), s.begin(), ::tolower);
          auto left = s.begin(), right = prev(s.end());
          while (left < right) {
              if (!::isalnum(*left))  ++left;
              else if (!::isalnum(*right)) --right;
              else if (*left != *right) return false;
              else { left++, right--; }
          }
          return true;
      }
  };