标签:结果 fga solution swap tps 旋转 范围 复杂度 时间复杂度
字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。
示例:
输入: s = "abcdefg", k = 2
输出: "cdefgab"
输入: s = "lrloseumgh", k = 6
输出: "umghlrlose"
说明: 1 <= k < s.length <= 10000
题目链接: https://leetcode-cn.com/problems/zuo-xuan-zhuan-zi-fu-chuan-lcof/
方法和旋转数组这题是一样的。步骤如下(假设字符串长度为 n):
代码如下:
class Solution {
public:
string reverseLeftWords(string s, int k) {
int n = s.size();
k %= n;
reverse(s, 0, n-1);
reverse(s, 0, n-k-1);
reverse(s, n-k, n-1);
return s;
}
void reverse(string& s, int left, int right){
while(left<right){
swap(s[left], s[right]);
left++;
right--;
}
}
};
标签:结果 fga solution swap tps 旋转 范围 复杂度 时间复杂度
原文地址:https://www.cnblogs.com/flix/p/13384609.html