汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列 S ,请你把其循环左移 K 位后的序列输出。例如,字符序列 S = ”abcXYZdef” , 要求输出循环左移 3 位后的结果,即 “XYZdefabc”
数据范围:输入的字符串长度满足0≤len≤100,0≤n≤100
进阶:空间复杂度 O(n) ,时间复杂度 O(n)
示例1输入: "abcXYZdef",3 返回值: "XYZdefabc"示例2
输入: "aab",10 返回值: "aba"思路/解法
先判断n和str.length()的长度,如果str.length() < n,此时应该用n减去str.length()的长度,直至str.length() > n,避免不必要的循环次数。接下来,直接暴力穷举即可。
class Solution {
public:
string LeftRotateString(string str, int n) {
if(str == "")return str;
//方式一
while(str.length() < n)
n -= str.length();
//方式二
//思路一
for(int i = 0;i < n;i++)
{
str.push_back(str[0]);
str.erase(str.begin());
}
//思路二
return str;
}
};



