面试问了这道题,居然没想出最优解,记录下。
#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; }