利用位操作实现字符串逆序:利用两个指示器,一个定在最左边,一个定在最右边,两个指示器同时向相反方向移动,并互相交换,直到两者相遇,算法结束。
分析:该算法的时间复杂度为o(n/2)~o(n),空间复杂度为o(1)
源程序代码:
#include "stdio.h"
#include "string.h"
void invert_point(char *str)
{
int i,j;
i=0;
j=strlen(str)-1;
while(i<j)
{
*(str+i)=*(str+i)^*(str+j);
*(str+j)=*(str+i)^*(str+j);
*(str+i)=*(str+i)^*(str+j);
i++;
j--;
}
}
int main(void)
{
char *str=new char[4];
strcpy(str,"12345");
invert_point(str);
printf("%s\n",str);
return 0;
}