Chinaunix首页 | 论坛 | 博客
  • 博客访问: 22659
  • 博文数量: 8
  • 博客积分: 1410
  • 博客等级: 上尉
  • 技术积分: 141
  • 用 户 组: 普通用户
  • 注册时间: 2008-01-20 00:03
文章分类
文章存档

2011年(1)

2008年(7)

我的朋友
最近访客

分类: C/C++

2008-06-30 02:20:05

可以忽略不是字母的特殊字符,并且忽略大小写字母的差别。
 
思想:
以字符串woeieow为例子
1、取字符串第一个和最后一个字符比较
2、如果比较结果相等,那么继续测试剩下的字串
结束控制,直至最后指针重合,或者first和last指针交换了位置则结束,返回true
 
忽略非特殊字符:
如果检测到*first不是字母,那么指针往前移动;
如果检测到*last不是字母,那么指针往后移动;
由于字母可以是大小写,所以需要转换后比较,但不改写原来字符串。
 
 
 
 

bool check(char *first, char *last)
{
    while( !isalpha(*first) )
        first++;
    while( !isalpha(*last))
        last--;

    if( first >= last ) return true;

    if( tolower(*last) == tolower(*first) )
    {
        return check( first + 1, last - 1 );
    }
    else
        return false;
}


int main()

{

 char st[]= "Madam, I'm Adam!!!!";

 cout <<st;
 if (check(st, st + strlen(st) - 1) )
  cout << " 是回文字符串"<<endl;
 else
  cout << " 不是回文字符串"<<endl;

 return 0;


}

阅读(1160) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~