今天的2道力扣比较简单,注意事项都写进注释里了。
Leetcode 344.反转字符串
class Solution {
public:
void reverseString(vector<char>& s) {
//可直接使用库函数reverse
for (int i = 0, j = s.size() - 1; i < s.size()/2; i++, j--) {
swap(s[i],s[j]);
}
}
};
Leetcode 541.反转字符串2
其主要是不要陷入思维定势,总是在for的最后一位接上 i++。
使用i +=2 *k要简单的多,后续类似于分段函数的思想,划分区域依次解决。
class Solution {
public:
string reverseStr(string s, int k) {
for (int i = 0; i < s.size(); i += (2 * k)) {
// 1. 每隔 2k 个字符的前 k 个字符进行反转
// 2. 剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符
if (i + k <= s.size()) {
reverse(s.begin() + i, s.begin() + i + k );
} else {
// 3. 剩余字符少于 k 个,则将剩余字符全部反转。
reverse(s.begin() + i, s.end());
}
}
return s;
}
};
791

被折叠的 条评论
为什么被折叠?



