饭不食,水不饮,题必须刷
还不会C语言,和我一起打卡! 《光天化日学C语言》
LeetCode 太难?上简单题! 《C语言入门100例》
LeetCode 太简单?大神盘他! 《夜深人静写算法》
编写一个函数,将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。
必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。
样例输入: [ “ a ” , “ b ” , “ c ” ] [“a”, “b”, “c”] [“a”,“b”,“c”]
样例输出: [ “ c ” , “ b ” , “ a ” ] [ “c”, “b”, “a”] [“c”,“b”,“a”]
class Solution {
public:
void reverseString(vector<char>& s) {
}
};
LeetCode 344. 反转字符串
翻转的含义,相当于就是 第一个字符 和 最后一个交换,第二个字符 和 最后第二个交换,… 以此类推,所以我们首先实现一个交换变量的函数
swap
,然后再枚举 第一个字符、第二个字符、第三个字符 …… 即可。
对于第 i i i 个字符,它的交换对象是 第 l e n − i − 1 len-i-1 len−i−1 个字符 (其中 l e n len len 为字符串长度)。swap
函数的实现,可以参考:《C语言入门100例》 - 例2 | 交换变量。
class Solution {
public:
void swap(char& a, char& b) { // (1)
char tmp = a;
a = b;
b = tmp;
}
void reverseString(vector<char>& s) {
int len = s.size();
for(int i = 0; i < len / 2; ++i) { // (2)
swap(s[i], s[len-i-1]);
}
}
};
&
是C++中的引用,在函数传参是经常用到,被称为:引用传递(pass-by-reference),即被调函数的形式参数虽然也作为局部变量在堆栈中开辟了内存空间简而言之,函数调用的参数,可以传引用,从而使得函数返回时,传参值的改变依旧生效。
函数调用的参数,可以传引用,从而使得函数返回时,传参值的改变依旧生效。