题解 | #反转链表#
左旋转字符串
http://www.nowcoder.com/practice/12d959b108cb42b1ab72cef4d36af5ec
描述 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列 S ,请你把其循环左移 K 位后的序列输出。例如,字符序列 S = ”abcXYZdef” , 要求输出循环左移 3 位后的结果,即 “XYZdefabc” 。是不是很简单?OK,搞定它!
数据范围:输入的字符串长度满足 0 \le len \le 100 \0≤len≤100 , 0 \le n \le 100 \0≤n≤100 进阶:空间复杂度 O(n)\O(n) ,时间复杂度 O(n)\O(n)
输入:
"abcXYZdef",3
返回值:
"XYZdefabc"
分析一下思路,利用vector把要移动的字符串储存起来,然后再利用“+”号在尾端加上。如果左移的k位大于字符串的长度,只需将k除以字符串长度取余即可作为左移的位数。
class Solution {
public:
string LeftRotateString(string str, int n) {
vector<char>v1;
if(str.size()==0)
return str;
if(n>str.size()){
n=n%str.size();
}
for(int i=0;i<n;i++){
v1.push_back(str[i]);
}
str.erase(str.begin(), str.begin()+n);
for(int i=0;i<n;i++){
str+=v1[i];
}
return str;
}
};
顺丰集团工作强度 348人发布
