遍历 Valid Palindrome

来源:互联网 发布:淘宝成都客户信息购买 编辑:程序博客网 时间:2024/06/12 16:24

思路:

时间复杂度O(N),空间复杂度O(N)。

class Solution {public:    bool isPalindrome(string s) {        if(s.empty()) return true;        vector<char> v;        for(int i = 0; i < s.size(); ++i) {            if(isalnum(s[i])) {                if(isalpha(s[i]))                    v.push_back(tolower(s[i]));                else                    v.push_back(s[i]);            }        }        int size = v.size();        for(int i = 0; i < size/2; ++i) {            if(v[i] != v[size-i-1]) return false;        }        return true;    }};

优化:

时间复杂度O(N),空间复杂度O(1)。

class Solution {public:    bool isPalindrome(string s) {        int start = 0;        int end = s.size() - 1;        while(start < end) {            while(start<end && !isalnum(s[start])) start++;            while(end>0 && !isalnum(s[end])) end--;            if(isalpha(s[start]) && tolower(s[start]) != tolower(s[end])) return false;            if(isdigit(s[start]) && s[start] != s[end]) return false;            start++;            end--;        }        return true;    }};


0 0
原创粉丝点击