刷题-力扣-541. 反转字符串 II
541. 反转字符串 II
题目链接
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reverse-string-ii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
题目描述
给定一个字符串 s 和一个整数 k,从字符串开头算起,每 2k 个字符反转前 k 个字符。
如果剩余字符少于 k 个,则将剩余字符全部反转。
如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。
示例 1:
输入:s = "abcdefg", k = 2
输出:"bacdfeg"
示例 2:
输入:s = "abcd", k = 2
输出:"bacd"
提示:
- 1 <= s.length <= 104
- s 仅由小写英文组成
- 1 <= k <= 104
题目分析
- 根据题目描述,每2k个字符反转前k个,在示例一中第一个2k个字符是“abcd”,反转前k个后为“bacd”
- 模拟题目描述编写代码
代码
class Solution {
public:
string reverseStr(string s, int k) {
if (k < 2) return s;
int sLen = s.length();
for (int i = 0; i < sLen; i += 2 * k) {
reverse(s.begin() + i, s.begin() + min(i + k, sLen));
}
return s;
}
};