所谓回文字符串,就是一个字符串,从左到右读和从右到左读是完全一样的。比如”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;
}