测试一个c风格字符串是否是回文字符串

测试一个c风格字符串是否是回文字符串,可以过滤掉空格和tab字符


#include "stdafx.h"
#include  <iostream.h>
#include <string.h>
#include <stdlib.h>
class StrTest
{
private :
 char* ptemp ;
 char* pFirst;
 char* pLast ;
public :
 StrTest(char* str) ;

 ~StrTest();
 void FixStr();
 
 bool IsGoodString() ;

};


StrTest::StrTest(char* str):pFirst(NULL) ,pLast(NULL),ptemp(str)
{
 int ilen = strlen(str);
 pFirst = (char*)malloc(ilen +1) ;
 memset(pFirst ,0 , ilen + 1) ;

}

StrTest::~StrTest()
{
 if(NULL != pFirst)
 {
  free((void*)pFirst);
  pFirst = NULL;
 }
}

//remove the tab and space
void StrTest::FixStr()
{
 char* p = pFirst ;
 int ilen = strlen(ptemp) ;
 for(int  i =0 ;i< ilen ;++i)
 {
  if(*ptemp != ' ' && *ptemp != '/t')
  {
   *p = *ptemp ;
   p ++ ;
  }
  ptemp ++ ;
 }

 pLast = pFirst + strlen(pFirst)-1;
}


bool StrTest::IsGoodString()
{
 FixStr();

 char* p = pFirst ;
 int icnt = strlen(p) /2 ;

 //char* pmid = pFirst + icnt ;

 for(int i =0 ;i<= icnt ;++i)
 {
  if(*p != *pLast)
   return false;
  p ++ ;
  pLast -- ;

 }

 return true;


}


int main(int argc, char* argv[])
{
 char* p = "ab    cba";
 StrTest strtest(p);
 cout<<p << (strtest.IsGoodString() == true ?"是回文字符串":"不是回文")<<endl;

 printf("Hello World!/n");
 return 0;
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值