(1)问题
力扣——541. 反转字符串 II - 力扣(LeetCode)
给定一个字符串 s
和一个整数 k
,从字符串开头算起,每计数至 2k
个字符,就反转这 2k
字符中的前 k
个字符。
- 如果剩余字符少于
k
个,则将剩余字符全部反转。 - 如果剩余字符小于
2k
但大于或等于k
个,则反转前k
个字符,其余字符保持原样。
示例 1:
输入:s = "abcdefg", k = 2 输出:"bacdfeg"
示例 2:
输入:s = "abcd", k = 2 输出:"bacd"
(2)思路
截取长度为k的字符串。然后判断需不需要翻转,然后再拼接成一个新的字符串,返回即可。
(3)解题流程
1.定义个字符串存储结果。
2.进入循环,每次截取k个字符。
3.判断是否需要翻转。
4.存储到结果字符串。
5.结束循环,返回结果字符串。
代码实现:
string reverseStr(string s, int k) {
string ans;
int i=0;
while(i<s.size())
{
string temp = s.substr(i,k);
if(i%(2*k)==0) reverse(temp.begin(),temp.end());
ans+=temp;
i+=k;
}
return ans;
}