字符串移动m位

面试问了这道题,居然没想出最优解,记录下。

#include <iostream>
#include <cstring>

using namespace std;

void str_turn (char *str, int len) {
    for (int i = 0; i < len/2; i++) {
        char tmp = str[i];
        str[i] = str[len - i - 1];
        str[len - i - 1] = tmp;
    }
}

void str_move(char *str, int m)
{
    int len = strlen(str);
    if (m > len) m = m % len;
    str_turn(str + (len - m), m);
    str_turn(str, len - m);
    str_turn(str, len);
}

int main()
{
    char str[100];
    int n;
    cin >> str >> n;
    str_move(str, n);
    cout << str << endl;
    return 0;
}
原文地址:https://www.cnblogs.com/HadesBlog/p/14301831.html