题目来源剑指offer58
代码如下:
class Solution {
public:
string reverseLeftWords(string s, int n) {
reverseString(s, 0, n - 1);
reverseString(s, n, s.size() - 1);
reverseString(s, 0, s.size() - 1);
return s;
}
private:
void reverseString(string& s, int i, int j) {
while(i < j) swap(s[i++], s[j--]);
}
};
为什么reversestring函数里第一个字符串后要加取地址符啊,这不就改变字符串s的类型了吗?
这个在C++里叫引用/reference, 差不多相当于自动帮你dereference的指针
谢谢,之前只学了C语言,刚刚查到引用修改实参了。
这是 C++ 的语法糖。也就是引用。底层实现上就是 T& 这个东西就变成了指针 T*。但是你写代码的时候,可以直接按引用来写,编译器编译的时候会把你的代码调整成和指针版本的代码等效,例如对于 T& t;你写 t = xxx,编译的时候就相当于 *t = xxx 。