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