题目描述:
实现思路:
代码如下:
bool isPalindrome(char * s){
char *ret= (char*)malloc(sizeof(char)*strlen(s));//不能对字符串直接进行修改,所以我们建立一个ret数组用来存储s中的值
int start = 0;
int end = strlen(s) - 1;
for (int i = 0; i <= end; i++) {//将s中的值拷贝在ret中,并且将字母都小写
ret[i] = s[i];
if (isalpha(ret[i])&&isupper(ret[i])) {
ret[i] += 32;
}
}
while (start < end) {
while (start < end && !isalpha(ret[start])&&!isdigit(ret[start])) //跳过除了字符和数字以外的字符
start++;
while (start < end && !isalpha(ret[end])&&!isdigit(ret[end]))
end--;
if (start < end&&ret[start] != ret[end])//进行比较
return false;
start++;
end--;
}
return true;
}