题目描述
汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列 S ,请你把其循环左移 K 位后的序列输出。例如,字符序列 S = ”abcXYZdef” , 要求输出循环左移 3 位后的结果,即 “XYZdefabc” 。
示例1
- 输入: "abcXYZdef",3------
- 返回值: "XYZdefabc"
题解1:暴力三次for循环
步骤:
- 第一次for循环将str中的字符输入到数组vector v中
- 第二次for循环将左移的字符全部插入到v数组的后面
- 第三次for循环,取出数组中的字符,并进行字符拼接
代码:
class Solution {
public:
string LeftRotateString(string str, int n) {
//题解1:字符串拼接
if(str.size() == 0) return "";
vector<char> v;
// 第一次for循环将str中的字符输入到数组vector<char> v中
for(int i=0;i<str.size();i++){
v.push_back(str[i]);
}
//第二次for循环将左移的字符全部插入到v数组的后面
for(int i = 0;i<n;i++){
v[str.size()+i] = v[i];
}
string result="";
//第三次for循环,取出数组中的字符,并进行字符拼接
for(int i = 0;i<str.size();i++){
result+=v[n+i];
}
return result;
}
};