当前位置:网站首页>每日一题 -- 验证回文串

每日一题 -- 验证回文串

2022-06-11 21:36:00 爱学代码的学生

题目描述:

实现思路:

1.  首先我们要将字母统一化

2.  创建两个指针,一个从头部出发一个从尾部出发

3.  比较两个指针所指向的数据是否相同

 代码如下:

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

原网站

版权声明
本文为[爱学代码的学生]所创,转载请带上原文链接,感谢
https://blog.csdn.net/rinki123456/article/details/124458408