本文主要是介绍【字符串算法题】541. 反转字符串 II,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目链接
思考
- 把字符串以2k的步长分成
count_reverse
个子区间。 - 考虑最后一个子区间的字符数量:1)如果大于等于k,则它要和前面的子区间一样,要对区间内的前k个字符进行反转;2)如果小于k,则它的所有字符都要进行反转。
cpp代码
class Solution {
public:string reverseStr(string s, int k) {int count_reverse = s.size() / (2*k); // 以2k为步长计算字符串子区间// 如果最后一个子区间字符大于等于k个,则它也算在要进行前k个字符反转的子区间集合内if(s.size() % (2*k) >= k) count_reverse++; int r_index = 0; // 每个子区间进行反转的开头indexfor(int i = 0; i < count_reverse; i++){ // 对每个子区间前k个字符进行反转reverse(s.begin() + r_index, s.begin() + r_index + k);r_index += (2*k);}// 如果最后一个子区间字符小于k个,则它的所有字符都要反转if(s.size() % (2*k) < k)reverse(s.begin() + r_index, s.end());return s;}};
这篇关于【字符串算法题】541. 反转字符串 II的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!