反转字符串 II
原题:
给定一个字符串 s 和一个整数 k,你需要对从字符串开头算起的每隔 2k 个字符的前 k 个字符进行反转。
- 如果剩余字符少于
k个,则将剩余字符全部反转。 - 如果剩余字符小于
2k但大于或等于k个,则反转前k个字符,其余字符保持原样。
示例:
输入: s = "abcdefg", k = 2输出: "bacdfeg"
提示:
- 该字符串只包含小写英文字母。
- 给定字符串的长度和
k在[1, 10000]范围内。
解题方法:
解法一:
class Solution {
public:
string reverseStr(string s, int k) {
int i=0,j=k-1;
while(i<s.size())
{
if(j>=s.size()) j=s.size()-1;
reversestr(i,j,s);
i+=2*k;
j+=2*k;
}
return s;
}
void reversestr(int i,int j,string& s)
{
while(i<j)
{
swap(s[i],s[j]);
i++;j--;
}
}
};
做题小结:
简单题。
