【Leetcode】125. 验证回文串 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符

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

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

示例 1:

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

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

思路

  • 属于回文串基础题之一
  • 主要在于要知道几个处理字符串的基本函数 就会很简单
class Solution {
public:
    bool isPalindrome(string s) {
        int low=0,high=s.size()-1;
        int flagl=0,flagr=s.size()-1;

        if(s.empty()) return true;

        while(low<high){//此处不能使用low和high 因为我们需要统计的是即组合数字的个数 用绝对做表会出现统计不完整的情况
            if(!isalnum(s[low])) { low++;continue;}
            if(!isalnum(s[high])) { high--;continue;}//为啥不能加break ,因为终止的是整个while 应该用continue continue 也不能用 为啥
            //因为如果此时高位不是数字字符 而低位是,高位加一跳出循环,下一次判断还不是 
            //真是服了 --写成++ 半天搞不出

            if(isalnum(s[low])&&isalnum(s[high])){
            char lf=tolower(s[low]), rg=tolower(s[high]);
            if(lf!=rg){
                return false;
            }
            low++;
            high--;
            }
        }
        return true;
    }
};

【Leetcode】125. 验证回文串 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符_第1张图片

你可能感兴趣的:(LeetCodes刷题之路)