LeetCode 541 : 反转字符串
程序员文章站
2022-06-11 10:34:52
...
class Solution {
public:
string reverseStr(string s, int k) {
int len = s.size();
//字符少于k个, 全部翻转
if(k > len) {
reverse(s.begin(), s.end());
return s;
}
int i = 0;
//循环遍历, 2k个字符为一组, 把每一组的前k个字符翻转, 直到最后一组字符小于2k, 后续处理
while(i < len) {
string::iterator begin = s.begin() + i;
if(i + k * 2 < len) {
//这一组有2k个字符
reverse(begin, begin + k);
}
else {
//i + 2k > len 说明最后一组字符少于2k个, 另做处理
break;
}
//更新i
i += 2 * k;
}
//处理最后一组字符
string::iterator begin = s.begin() + i;
if(i + k < len) {
//最后一组字符少于2k个但大于k个, 翻转前k个
reverse(begin, begin + k);
}
else {
//最后一组字符少于k个, 剩下的全部翻转
reverse(begin, s.end());
}
return s;
}
};
上一篇: 服务器端对应同一客户端多个请求的问题
下一篇: LeetCode 415: 字符串相加