您的位置:首页 > 职场人生

面试经典题目:字符串的反转算法

2013-08-05 11:01 274 查看
#include <iostream>

using namespace std;

char *strrev1(const char *str)
{
int len = strlen(str);
char *temp = new char[len + 1];
strcpy(temp, str);

for (int i = 0; i < len / 2; i++)
{
char iTemp = temp[i];
temp[i] = temp[len - i - 1];
temp[len - i - 1] = iTemp;
}
return temp;
}

char *strrev2(const char *str)
{
int len = strlen(str);
char *temp = new char[len + 1];
strcpy(temp, str);
char *ret = temp;
char *p = temp + len - 1;

while (p > temp)
{
//char iTemp = *p;  //方法一
//*p = *temp;
//*temp = iTemp;

//*p ^= *temp;	//方法二
//*temp ^= *p;
//*p ^= *temp;

*p = *p + *temp;
*temp = *p - *temp;//方法三
*p = *p - *temp;

p--;
temp++;
}
return ret;

}

int main(int argc, char *argv[])
{
char *str = "Hello, I'm a student!";
char *temp;
//temp = strrev1(str);
temp = strrev2(str);
cout << temp << endl;

system("pause");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: