0
点赞
收藏
分享

微信扫一扫

每日一题 -- 验证回文串

夕阳孤草 2022-04-27 阅读 38
c语言

题目描述:

实现思路:

 代码如下:

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;
}
举报

相关推荐

0 条评论