leetcode125. 验证回文串

文章目录

    • 题目
    • 基本思想

题目

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

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

示例 1:

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

示例 2:

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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/valid-palindrome
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

基本思想

注意字符串相关的函数的调用:

  • 判断一个字符是否是字母:isalpha (s[i])
  • 判断一个字符是否是数字:isdigit©
  • 将字符串中的所有字符转换成大写:transform(开始位置,结束位置,输出的开始位置,操作函数)
class Solution {
public:
    bool isPalindrome(string s) {
        if(s.length() == 0)
            return true;
        int i = 0, j = s.length() - 1;
        transform(s.begin(), s.end(), s.begin(), ::toupper);
        while(i < j){
            if(isdigit(s[i]) || isalpha(s[i])){
                if(isdigit(s[j]) || isalpha(s[j])){
                    if(s[j] != s[i])
                        return false;
                    ++i;
                    --j;
                }
                else
                    --j;
            }
            else
                ++i;
        }
        return true;
    }
};

你可能感兴趣的:(leetcode125. 验证回文串)