C和指针之字符串编程练习10(判断字符串是否是回文数)

1、问题

//如果参数字符串是个回文,函数就返回真,否则返回假。回文就是指一个字符串从左向右和从右向左读是一样的。函数应该忽略所有的非字母字符,而且在进行字符比较时不用区分大小写。







2、代码实现

#include 
#include 


//如果参数字符串是个回文,函数就返回真,否则返回假。回文就是指一个字符串从左向右和从右向左读是一样的。函数应该忽略所有的非字母字符,而且在进行字符比较时不用区分大小写。
int palindrome(char *string)
{
	if (string == NULL)
		return 0;
	char *start  = string;
	char *end = string;
	//把end指向'\0',然后退以下,这里不要写成while (*end++ != '\0');
	//不然需要--end两次
	while (*end != '\0')
	{
		++end;	
	}
	//尾巴指针退到字符串末尾
	--end;
	while (start < end)
	{
		//这里不能用if,if只能移动一个非字符的下标,如果非字符是
		//连续的话,这里用if就会有问题
		while (!isalpha(*start))
			++start;
		while (!isalpha(*end))
			--end;
		//只要发现不相等,就返回0
		if (*start != *end)
			return 0;
		++start;
		--end;
	}
    return 1;
}


int main()
{ 
    char *string_one = "w3e1rq778e89qr1e3w";
	char *string_two = "chenyu";
	char *string_three = "chenyuuynehc"

你可能感兴趣的:(C和指针)