题目地址:
https://www.acwing.com/problem/content/74/
字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如输入字符串"abcdefg"和数字 2 2 2,该函数将返回左旋转 2 2 2位得到的结果"cdefgab"。
注意:数据保证 n n n小于等于输入字符串的长度。
代码如下:
#include <iostream>
using namespace std;
class Solution {
public:
void reverse(string& s, int i, int j) {
while (i < j) {
swap(s[i], s[j]);
i++, j--;
}
}
string leftRotateString(string str, int n) {
reverse(str, 0, n - 1);
reverse(str, n, str.size() -1);
reverse(str, 0, str.size() - 1);
return str;
}
};
时间复杂度 O ( n ) O(n) O(n),空间 O ( 1 ) O(1) O(1)。