WEI-CHENG CHEN

說明

整理字串+測驗回文

解法 01

class Solution {
public:
    bool isPalindrome(string s) {
        string s_noSpace;
        // 去除空格
        for(char c:s){
            if(isalnum(c)) s_noSpace+=tolower(c);
        }
        // 檢查回文
        string s_reverse = s_noSpace;
        reverse(s_reverse.begin(), s_reverse.end());
        return s_reverse == s_noSpace;
    }
};

解法 02:雙指針

class Solution {
public:
    bool isPalindrome(string s) {
        int n = s.size();
        int left = 0, right = n-1;
        while(left<right){
            // 處理左指針不符規範(不是數值,就繼續縮)
            while(left<right && !isalnum(s[left])) left++;
            // 處理右指針不符規範
            while(left<right && !isalnum(s[right])) right--;
            // 檢查回文
            if(left<right){
                if (tolower(s[left]) != tolower(s[right])) return false;
                left++;
                right--;
            }
        }
        return true;
    }
};