leetcode 125. 验证回文串(Valid Palindrome)

题目描述:

给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。

说明:本题中,我们将空字符串定义为有效的回文串。

示例 1:

    输入: "A man, a plan, a canal: Panama"
    输出: true

示例 2:

    输入: "race a car"
    输出: false

解法:

class Solution {
public:
    bool isPalindrome(string s) {
        vector<char> mp(128, ' ');
        for(int ch = 'a'; ch <= 'z'; ch++){
            mp[ch] = ch;
            mp[int(ch - 'a' + 'A')] = ch;
        }
        for(int ch = '0'; ch <= '9'; ch++){
            mp[ch] = ch;
        }
        
        int l = 0, r = s.size() - 1;
        while(l < r){
            if(mp[s[l]] == ' '){
                l++;
            }else{
                if(mp[s[r]] == ' '){
                    r--;
                }else{
                    if(mp[s[l]] == mp[s[r]]){
                        l++;
                        r--;
                    }else{
                        return false;
                    }
                }
            }
        }
        return true;
    }
};

猜你喜欢

转载自www.cnblogs.com/zhanzq/p/10560199.html
今日推荐