#Leetcode# 541. Reverse String II
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 用法:
#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; }