📅  最后修改于: 2023-12-03 15:07:52.004000             🧑  作者: Mango
反转字符串是一个经典的问题,无论在算法竞赛还是在日常生活中都有广泛的应用场景。本文将介绍C/C++中反转字符串的不同方法。
stl库提供了专门用于反转数组的函数reverse()
。该函数定义在头文件<algorithm>
中,其语法如下:
void reverse (BidirectionalIterator first, BidirectionalIterator last);
其中,first
和last
是要反转的数组的起始位置和终止位置。
示例代码:
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
string s = "hello world";
reverse(s.begin(), s.end());
cout << s << endl;
return 0;
}
输出:
dlrow olleh
通过循环遍历字符串的前半部分和后半部分,并进行字符交换来实现反转的效果。
示例代码:
#include <iostream>
using namespace std;
void reverse(string& s) {
int n = s.size();
for (int i = 0; i < n / 2; ++i) {
swap(s[i], s[n-i-1]);
}
}
int main() {
string s = "hello world";
reverse(s);
cout << s << endl;
return 0;
}
输出:
dlrow olleh
递归是一种简洁而优雅的解决方案,但相比其他方法可能会带来额外的时间和空间开销。
示例代码:
#include <iostream>
using namespace std;
void reverse(string& s, int i, int j) {
if (i >= j) return;
swap(s[i], s[j]);
reverse(s, i+1, j-1);
}
int main() {
string s = "hello world";
reverse(s, 0, s.size()-1);
cout << s << endl;
return 0;
}
输出:
dlrow olleh
本文介绍了C/C++中三种不同的反转字符串的方法,每种方法都有其适用场景和优缺点,在实际应用中需要按照具体情况进行选择。