题目描述
请翻转一个字符串。
样例
给定 s = “hello”, 输出 “olleh”.
代码
class Solution {
public:
void reverseString(vector<char>& s) {
for(int i=0,j=s.size()-1;i<=j;i++,j--) swap(s[i],s[j]);
}
};
(字符串处理) O(n)O(n)
一般可以用两个指针分别从首尾往中间扫描,交换两个指针指向的字符,直到两个指针相遇为止。
这里我们直接用C++中的逆向迭代器rbegin和rend,重新构造string即可。
时间复杂度分析:整个字符串仅被遍历一次,所以时间复杂度是 O(n)O(n)。
C++ 代码
class Solution {
public:
string reverseString(string s) {
return string(s.rbegin(), s.rend());
}
};