利用位操作實現字符串逆序:利用兩個指示器,一個定在最左邊,一個定在最右邊,兩個指示器同時向相反方向移動,並互相交換,直到兩者相遇,算法結束。
分析:該算法的時間複雜度爲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;
}