leetcode 125. 验证回文串

问题描述

给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
说明:本题中,我们将空字符串定义为有效的回文串。
示例 1:
输入: "A man, a plan, a canal: Panama"
输出: true
示例 2:
输入: "race a car"
输出: false

问题分析

这道题难度为简单,主要记住三个函数:

  1. isdigit():数字返回非0,非数字返回0;
  2. isalpha():字母返回非0,非字母返回0;
  3. tolower/toupper: 字母的大小写转换.

代码

class Solution {
public:
    bool isPalindrome(string s) {
        int n = s.size();
        if(n == 0)return true;
        int left=0,right = n-1;
        while(left < right)
        {
            if((isdigit(s[left])||isalpha(s[left]))&&(isdigit(s[right])||isalpha(s[right]))){
                if(tolower(s[right]) == tolower(s[left]) ){
                    --right;++left;
                }
                else
                    return false;
            }
            else if(!(isdigit(s[left])||isalpha(s[left])))
                ++left;
            else --right;
        }
        return true;
    }
};
posted @ 2019-12-03 18:12  曲径通霄  阅读(77)  评论(0编辑  收藏  举报