String Algorithm: Reverse the first k characters for every 2k ch
- 时间:2020-09-23 15:11:59
- 分类:网络文摘
- 阅读:109 次
Given a string and an integer k, you need to reverse the first k characters for every 2k characters counting from the start of the string. If there are less than k characters left, reverse all of them. If there are less than 2k but greater than or equal to k characters, then reverse the first k characters and left the other as original.
Example:
Input: s = “abcdefg”, k = 2
Output: “bacdfeg”Restrictions:
The string consists of lower English letters only.
Length of the given string and k will in the range [1, 10000]
The problem statement is actually a bit hard to understand, but once you get it, this problem is easy to solve.
How to Reverse string in C++ using std::reverse for the first k characters?
The std::C++ has a handy reverse method that takes two iterators, and reverse it. Thus, we can iterate from the start, and increment the step of 2*k, compute the range, which is then passed to the reverse function to do the work.
1 2 3 4 5 6 7 8 9 10 | class Solution { public: string reverseStr(string s, int k) { for (int i = 0; i < s.size(); i += 2 * k) { int a = i, b = min(i + k, (int)s.size()); reverse(begin(s) + a, begin(s) + b); } return s; } }; |
class Solution {
public:
string reverseStr(string s, int k) {
for (int i = 0; i < s.size(); i += 2 * k) {
int a = i, b = min(i + k, (int)s.size());
reverse(begin(s) + a, begin(s) + b);
}
return s;
}
};You can also use a two pointer to swap until they meet in the middle.
1 2 3 4 5 6 7 8 9 10 11 12 13 | class Solution { public: string reverseStr(string s, int k) { for (int i = 0; i < s.size(); i += 2 * k) { int a = i, b = min(i + k, (int)s.size()); int left = a, right = b - 1; while (left < right) { swap(s[left ++], s[right --]); } } return s; } }; |
class Solution {
public:
string reverseStr(string s, int k) {
for (int i = 0; i < s.size(); i += 2 * k) {
int a = i, b = min(i + k, (int)s.size());
int left = a, right = b - 1;
while (left < right) {
swap(s[left ++], s[right --]);
}
}
return s;
}
};Other string reversing algorithms:
- How to Reverse Words in a String in Place using C++ std::reverse?
- How to Reverse Words in a String?
- How to Reverse Only Letters in a String?
- How to Reverse Vowels of a String in C/C++?
- Reverse String in C/C++
–EOF (The Ultimate Computing & Technology Blog) —
推荐阅读:禁用wordpress4.4+版本自动生成768w像素缩略图功能 自动为wordpress文章图片添加alt属性和title属性 如何为WordPress导航菜单、标签、出站等链接添加nofollow标签属性 如何设置WordPress的RSS feed更新频率 利用WordPress开发者调试模式解决PHP500内部服务器错误 正确屏蔽 WordPress 版本号的代码 WordPress插件WP First Letter Avatar代码版 让WordPress文章内链接在新窗口打开的方法 如何让wrodpress在分类列表页显示其下子分类文章列表 如何下载WordPress官网插件的旧版本
- 评论列表
-
- 添加评论