125. Valid Palindrome

题目描述:给字符串判断是否回文,只考虑数字和字母,忽略其他字符。如:

"A man, a plan, a canal: Panama" is a palindrome.
"race a car" is not a palindrome.

分析:忽略除数字字母以外的字符,左右两边同时遍历判断即可。时间复杂度O(n),空间O(1)。

代码

class Solution {
public:
    bool isPalindrome(string s) {
        //首先将所有字符都转换成小写
        transform(s.begin(), s.end(), s.begin(), ::tolower);
        auto l = s.begin(), r = prev(s.end());
        while(l < r)
        {
            //isalnum判断字符是否是字母或数字
            if (!::isalnum(*l)) l++;
            else if (!::isalnum(*r)) r--;
            else if (*l != *r) return false;
            else
            {
                l ++;
                r --;
            }
        }
        return true;
    }
};

你可能感兴趣的:(125. Valid Palindrome)