1.普通逆序
可以任意申请内存或变量,对于指针版本,此方法不好,需要在函数内开辟空间,在函数结束前返回该空间首地址,由于不能释放该内存,出现内存泄漏 ,所以这里只提供引用版本:
#define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <string> using namespace std; void Reverse(string &str) { int len = str.size(); int i, j; char tmp; for (i = 0, j = len - 1; i < j; i++, j--) { tmp = str[i]; str[i] = str[j]; str[j] = tmp; } } int main(void) { string tmp; cin >> tmp; Reverse(tmp); cout << tmp << endl; return 0; }
2.字符串原地逆序
即不能开辟额外的内存空间,思想是将字符串两边的字符逐个交换位置。定义两个指针分别指向字符串头部和尾部。
#define _CRT_SECURE_NO_WARNINGS #include <iostream> using namespace std; char* Reverse(char *str) { char* p = str; // p指针指向字符串头部 char* q = str; while (*q != '