344. 反转字符串
题目
思路
我的思路是,用双指针,一个指左,一个指右,循环互换即可。
代码随想录的更简单精妙,直接用一个for循环搞定,里面用swap来互换。
代码
我的解法
class Solution {
public:
void reverseString(vector<char>& s) {
int left = 0, right = s.size() - 1;
while (left < right) {
char tmp = s[left];
s[left] = s[right];
s[right] = tmp;
left++;
right--;
}
}
};
随想录解法
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]);
}
};
541. 反转字符串 ll
题目
思路
主要是注意剩下的字符数量,然后这里用了库函数reverse,其实也可以自己实现,和上一题的代码差不多。
代码
class Solution {
public:
string reverseStr(string s, int k) {
for (int i = 0; i < s.size(); i += 2 * k) {
if (i + k <= s.size()) {
reverse(s.begin() + i, s.begin() + i + k);
}
else {
reverse(s.begin() + i, s.end());
}
}
return s;
}
};