https://leetcode.com/problems/reverse-string-ii/
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]
代码:
class Solution {
public:
string reverseStr(string s, int k) {
int len = s.length();
int cnt = len / k;
for(int i = 0; i <= cnt; i ++) {
if(i % 2 == 0) {
if(i * k + k < len)
reverse(s.begin() + i * k, s.begin() + i * k + k);
else reverse(s.begin() + i * k, s.end());
}
}
return s;
}
};
reverse 函数好像很久不用了呢
reverse 用法:
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
#include <bits/stdc++.h> using namespace std; const int maxn = 1e5 + 10; string s; char a[maxn]; int main() { getline(cin, s); reverse(s.begin(), s.end()); cout << s; printf("\n-----\n"); gets(a); int len = strlen(a); reverse(a, a + len); printf("%s", a); return 0; }
FH