美文网首页
125. Valid Palindrome

125. Valid Palindrome

作者: Nautilus1 | 来源:发表于2017-12-03 17:15 被阅读0次

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

"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

      本文链接:https://www.haomeiwen.com/subject/lrxzbxtx.html