《C和指针》——第九章 判断回文

来源:互联网 发布:医院ap网络 编辑:程序博客网 时间:2024/06/05 00:24

《C和指针》第九章 

题目:编写函数

              int palindrome( char *string );

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

        举例:Madam, I'm Adam 就是一个回文。


下面是我写的:

/************************************************************************************************* Copyright(C):* Filename    :* Author      :* Version     :* Date        :* Description :*************************************************************************************************/#include <ctype.h>#include <string.h>//----------------------------------------------------------// FindAlpha()////char *FindAlpha(register char *string, register char *end){while( string<=end && isalpha(*string)==0 ){string++;}if ( string > end ){return NULL;}else{return string;}}//----------------------------------------------------------// FindAlpha()////char *FindAlphaR(register char *begin, register char *end){while( end>=begin && isalpha(*end)==0 ){end--;}if ( end < begin ){return NULL;}else{return end;}}//----------------------------------------------------------// Palindrome()////int Palindrome(char *string){char *phead;char *ptail;char *tmph;char *tmpt;if ( string == NULL ){return 0;}phead = string;ptail = phead+strlen(string)-1;if ( (phead=FindAlpha(phead, ptail)) == NULL )return 0;if ( (ptail=FindAlphaR(phead,ptail)) == NULL )  return 0;tmph = phead;tmpt = ptail;while( phead < ptail ){if ( tolower(*phead) != tolower(*ptail) ){break;}phead = FindAlpha(tmph+1,tmpt-1);ptail = FindAlphaR(tmph+1,tmpt-1);tmph = phead;tmpt = ptail;if ( phead==NULL || ptail==NULL ){break;}}return phead == ptail;}


原创粉丝点击