Leetcode 541. Reverse String II

来源:互联网 发布:淘宝天猫折扣群 编辑:程序博客网 时间:2024/06/15 20:44

原题链接:https://leetcode.com/problems/reverse-string-ii/description/

描述:

Given a string and an integer k, you need to reverse the first k characters for every 2k characters counting from the start of the string. If there are less 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 left the other as original.
Example:
Input: s = “abcdefg”, k = 2
Output: “bacdfeg”
Restrictions:
The string consists of lower English letters only.
Length of the given string and k will in the range [1, 10000]


Solution:

本题理解比较简单,就是每2k个元素翻转前k个,采用的是比较笨直接数的方法通过的,并没有很耐心的去找规律,代码如下:

#include <iostream>#include <string>using namespace std;string reverseStr(string s, int k) {    int len = s.size();    string str = s, res = "";    while (len > 2 * k) {        string temp = str.substr(0, 2 * k);        reverse(temp.begin(), temp.begin() + k);        res += temp;        str = str.substr(2 * k);        len = len - 2 * k;    }    if (len < k) {        reverse(str.begin(), str.end());        res += str;    }    else {        reverse(str.begin(), str.begin() + k);        res += str;    }    return res;}int main(){    string s;    int k;    cin >> s >> k;    cout << reverseStr(s, k) << endl;    system("pause");    return 0;}
原创粉丝点击