题目:汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!
思路:首先取得字符串的长度,然后对串进行相加,得到新串(新串由原来串加原来串)再利用子串函数从n位开始去,去长度为原来串的长度即得到结果
class Solution {
public:
string LeftRotateString(string str, int n)
{
int len = str.size();
if (len == 0)
return "";
n = n % len;
str += str; //形成一个新串
return str.substr(n,len);//取新的子串返回,abcXYZdefabcXYZdef ,新的子串从n位开始去,长度为len,结果正好为XYZdefabc
}
};