9 验证回文串

bool isPalindrome(char * s){
    int i,j,len;
    len = strlen(s);
    if(len<=1)       //如果字符串有字符但是只有1个的话符合题目要求,返回true
        return true;
    
    for(i=0,j=len-1;i<j; )
    {
        if(!isalnum(s[i]))    //这个isalnum()是用来判断字符是否为字母和数字,如果是的话返回1,不是返回0
        {
            i++;
            continue;
        }
        
        if(!isalnum(s[j]))
        {
            j--;
            continue;
        }
        
        if(tolower(s[i]) != tolower(s[j]))   //tolower()是把大写字母转换为小写字母的函数,如果非字母的话不做处理
        {
            return false;
        }
        else
        {
            i++;
            j--;
        }
    }
    return true;
}

批注:这道题目我一开始的想法也是这样,因为这道题目只考虑字母和数字,只要把符号和空格去掉即可,然后将大写字母转换为小写字母进行判断是和符合回文串。我是把每个部分都自己写,然后发现代码非常累赘。看到网上有直接调用者两个函数的写法让原本的代码变得简洁。而且我一开始也没有考虑到如果只有一个字母的情况

原文地址:https://www.cnblogs.com/181118ljh123/p/11978325.html