前段时间做了腾讯实习生笔试题,其中一道是判别回文字符串的,这里给出自己的一个解法,希望对大家有所帮助:
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;
}