/
541_ReverseStringII.cpp
47 lines (41 loc) · 1.01 KB
/
541_ReverseStringII.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include<iostream>
#include<string>
using namespace std;
class Solution {
public:
string reverseStr(string s, int k) {
int length = s.size();
if (length < k){
Reverse(s, 0, length-1);
}
else{
for (int i = 0; i <= (length/(2*k)); ++i){
if (2*i*k+k-1 <= length-1) //ÅжÏÊÇ·ñÔ½½ç
Reverse(s, 2*i*k, 2*i*k+k-1);
else
Reverse(s, 2*i*k, length-1);
}
}
return s;
}
private:
void Reverse(string& str, int start, int end){
while (start < end){
Swap(&str[start], &str[end]);
++start;
--end;
}
}
void Swap(char* i, char* j){
char temp = *i;
*i = *j;
*j = temp;
}
};
int main()
{
string str = "yzqyljrnigxvdtneasepfahmtyhlohwxmkqcdfehybknvdmfrfvtbsovjbdhevlfxpdaovjgunjqlimjkfnqcqnajmebeddqsgl";
Solution solu;
cout << solu.reverseStr(str, 39) << endl;
return 0;
}