巧用位操作

利用位操作實現字符串逆序:利用兩個指示器,一個定在最左邊,一個定在最右邊,兩個指示器同時向相反方向移動,並互相交換,直到兩者相遇,算法結束。

分析:該算法的時間複雜度爲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;
}

 

 

發佈了40 篇原創文章 · 獲贊 8 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章