33,311
社区成员
发帖
与我相关
我的任务
分享
int r(char *s)
{
char *p=s;
while (*p++);//把p指向字符串尾,此时s指向字符串开头
while (s <--p && *s++==p[-1]);//当s<p,同时s和p所指向的字符相同,此时p向回走一步,s向前走一步
return s>=p;//如果s>=p,则s是一个回文
}
你自己写一个例子,手动模仿一下就应该明白了。
要注意到,p[-1]实际上是*(p-1)
{
char *p=s;
while (*p++); //这里p指向字符串结束处
while (s <--p && *s++==p[-1]); //这里只要s和p前一个字符相等,p就向后倒退一个字符,s前进一个字符
return s>=p; //如果s最后跑到p前面说明是回文,否则不是
}