您的位置:首页 > 其它

判断一个字符串是否回文

2017-04-10 16:28 288 查看
所谓回文字符串,就是一个字符串,从左到右读和从右到左读是完全一样的。比如”level” 、 “aaabbaaa”

题目:判断一个字符串是否为回文

解法:递归、循环

循环的方法根据传参的不同,分为两种,如下:

循环一

bool IsPalindereme(char* str,size_t size)
{
if(str==NULL || size == 0)
return false;
for(int idx=0; idx<=size/2; ++idx)
{
if(str[idx] != str[size-1-idx])
return false;
}
return true;
}


循环二

bool IsPalindereme(char* str,size_t size)
{
if(str == NULL ||size==0)
return false;
char* pBegin = str;
char* pEnd = str+size-1;

while(pBegin < pEnd)
{
if(*pBegin != *pEnd)
return false;
++pBegin;
--pEnd;
}
return true;
}


利用递归实现

bool IsPalindereme(char* str,size_t size)
{
if(str == NULL || str == "")
return false;
if(0 == size || 1 == size)
return true;
if(*str != str[size-1])
return false;
return IsPalindereme(str+1,size-2);
}


测试代码:

void funtest()
{
cout<<IsPalindereme("1221",4)<<endl;
cout<<IsPalindereme("",0)<<endl;//特殊情况
}
int main()
{
funtest();
getchar();
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  递归 回文