C++面试题,不使用临时变量实现字符串反转

来源:互联网 发布:剑三破军道姑捏脸数据 编辑:程序博客网 时间:2024/06/06 17:23

写了两种实现方式:


#include "stdafx.h"

#include <string.h>
void reverseString(char *str,unsigned int len)
{
char * p1,*p2;
p1=p2=str;
p2+=len-1;


while(p1<p2)
{
*(p2+1)=*p1;
*p1=*p2;
p1++,p2--;
}


int half = len/2;
for(int i=1;i<=half;i++)
{
*(p2+i)=*(p2+(i+1));
}
*(p2+(half+1))='\0';


return ;


}
void reverseString2(char *str,unsigned int len)
{
char * p1,*p2;
p1=p2=str;
p2+=len-1;


while(p1<p2)
{
*p2^=*p1;
*p1^=*p2;
*p2^=*p1;
p1++,p2--;
}




return ;


}
int _tmain(int argc, _TCHAR* argv[])
{


static char test[]="reverse";


static char test1[]="engine";


static char test2[]="algorithm";


printf("%s\r\n",test);
reverseString2(test,strlen(test));
printf("%s\r\n",test);


printf("%s\r\n",test1);
reverseString2(test1,strlen(test1));
printf("%s\r\n",test1);


printf("%s\r\n",test2);
reverseString2(test2,strlen(test2));
printf("%s\r\n",test2);
return 0;
}

0 0
原创粉丝点击