/**********************************************************
题目:不开辟用于交换数据的临时空间,如何完成字符串的逆序
***************************************************************/
//类似于不借助辅助变量交换两个值
#include <cstdio>
#include <string.h>
template <typename T>
static void swap(T &a,T &b)
{
a=a+b;
b=a-b;
a=a-b;
}
void reverse(char *s)
{
int i = 0;
int len = strlen(s);
int j = len-1;
while(i < j)
{
/****************
异或方法交换两个数据
s[i] = s[i]^s[j];
s[j] = s[i]^s[j];
s[i] = s[i]^s[j];
*****************/
swap(s[i],s[j]);
i++;
j--;
}
}
int main(void)
{
char str[] = "Buyer's Remorse";
printf("%s\n",str);
reverse(str);
printf("%s\n",str);
return 0;
}
面试:不开辟用于交换数据的临时空间,如何完成字符串的逆序
最新推荐文章于 2021-11-01 20:34:22 发布