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

2024年11月16日 04:51
有1个网友回答
网友(1):

#include
#include
#define N 100
int fun(char *p) //传入字符串的首地址
{
char *q;
q = p; //使p和q同时指向字符串的首地址
while(*q) //使q指向字符串的结束标志''
q++;
q--; //使q指向字符串的最后一个字符,而不是结束标志
while(p{
if(*p!=*q) //判断首尾字符是否相等,如果不相等则说明不是回文串
return 0;
p++;//p和q同时向字符串的中间移动
q--;
}
return 1;
}
int main(void)
{
char ch[N];
printf("请输入一个字符串:");
gets(ch); //使用gets可以接受带空格的字符串
if(fun(ch))
printf("是回文串\n");
else
printf("不是回文串\n");
return 0;
}
C++版
————————————————
#include
#include
using namespace std;

bool isRstring(const char *s);

int main()
{
string astring;
cin >> astring;
if( isRstring(astring.c_str()) )
cout << "yes" << endl;
else
cout << "no" << endl;
return 0;
}

bool isRstring(const char *s)
{
int length = strlen(s);
for(int i = 0; i < length/2 + 1; i++)
{
if( s[i] != s[length-1-i] ) return false;
}

return true;
}