您的位置:首页 > 其它

两个指针判别字符串是否是回文字符串

2016-05-15 17:24 218 查看
前段时间做了腾讯实习生笔试题,其中一道是判别回文字符串的,这里给出自己的一个解法,希望对大家有所帮助:

1.求出字符串s长度;

2.使用两个指针p、q分别指向其左右两边;

3.若*p一直等于*q,则表明为回文字符串;

代码如下(一个函数实现,有冗余):

#include<iostream>
#include<string.h>

using namespace std;

void main()
{
char s[100];
char* p = NULL;
char* q = NULL;
printf("请输入一个字符串:\n");
scanf("%s",s);

int len = strlen(s);
cout<<len<<endl;
if(len%2 == 0)
{
p = &s[len/2-1];
q = &s[len/2];
int p_len = len/2 -1;
while(p_len != 0)
{
if(*p == *q)
{
p--;
q--;
p_len--;
}
else
break;
}
if(p_len == 0)
printf("s是回文字符串 \n");
else
printf("s不是回文字符串 \n");
}
else
{
p = &s[len/2-1];
q = &s[len/2+1];
int p_len = len/2 -1;
while(p_len != 0)
{
if(*p == *q)
{
p--;
q--;
p_len--;
}
else
break;
}
if(p_len == 0)
printf("s是回文字符串 \n");
else
printf("s不是回文字符串 \n");
}
system("pause");
return;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息