leetcode c++ 125验证回文串

版权声明:本文未经允许不得转载 https://blog.csdn.net/weixin_43873349/article/details/89501001

leetcode c++ 125 验证回文串

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

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

示例 1:

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

示例 2:

输入: “race a car”
输出: false

    首先,c++有个内置的STL的函数transform(),大概的意思就是把一个序列经过变换输出到第三个参数的容器中,本题中用于将给定的字符串转换为小写字符。本人也是第一次用这个函数。
    其次,还有一个函数就是判断字符是否是字母或数字的函数isalnum()。
    进入正题,本题思路就是:若果给定字符串是空串,那么直接返回true。如不空,循环判断,将给定字符串全部转换为小写字符,然后遇到不是字母也不是数字的字符就跳过,如果有不同的字符直接返回false。知道左边右边的字符都比较完结束。
    下面上代码

class Solution {
public:
    bool isPalindrome(string s) {
        if(s.empty()){
            return true;
        }
        transform(s.begin(), s.end(), s.begin(), ::tolower);
        int left = 0;
        int right = s.size() - 1;
        while(left < right){
            if(!isalnum(s[left])){
                ++left;
            } else if(!isalnum(s[right])){
                --right;
            } else if(s[left] != s[right]){
                return false;
            } else {
                ++left;
                --right;
            }
        }
        return true;
    }
};

猜你喜欢

转载自blog.csdn.net/weixin_43873349/article/details/89501001
今日推荐