Given a string s
and an integer k
, reverse the first k
characters for every 2k
characters counting from the start of the string.
If there are fewer 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 leave the other as original.
Example 1:
Input: s = "abcdefg", k = 2 Output: "bacdfeg"
Example 2:
Input: s = "abcd", k = 2 Output: "bacd"
Constraints:
1 <= s.length <= 104
s
consists of only lowercase English letters.1 <= k <= 104
1.使用自己定义的reverse函数
class Solution {
public:
string Reverse(string& s,int begin,int end){
for(int i=begin,j=end-1;i<j;i++,j--){
swap(s[i],s[j]);
}
return s;
}
string reverseStr(string s, int k) {
int length=s.size();
for(int i=0;i<length;i+=2*k){
if(i+k<=length)Reverse(s,i,i+k);
else Reverse(s,i,length);
}
return s;
}
};
注意:
1.定义自己的reverse函数,需要用&符号,否则无法改变字符串
2.Reverse函数中i,j的起始位置需要注意
2.使用C++的库函数reverse
class Solution {
public:
string reverseStr(string s, int k) {
int length=s.size();
for(int i=0;i<length;i+=2*k){
if(i+k<=length)reverse(s.begin()+i,s.begin()+i+k);
else reverse(s.begin()+i,s.end());
}
return s;
}
};
注意:
1,C++库的reverse函数的输入
2.整体思路:如果剩余部分大于等于k,前k个反转,小于k,全部反转
标签:reverse,Reverse,int,II,541,characters,than,string From: https://blog.csdn.net/2301_80161204/article/details/140243303