巧用位操作

利用位操作实现字符串逆序:利用两个指示器,一个定在最左边,一个定在最右边,两个指示器同时向相反方向移动,并互相交换,直到两者相遇,算法结束。

分析:该算法的时间复杂度为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;
}

 

 

你可能感兴趣的:(巧用位操作)