您的位置:首页 > Web前端

剑指offer:左旋转字符串

2017-04-21 15:45 113 查看


题目描述

汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!

//字符串循环左移
//二次翻转
class Solution {
public:
string LeftRotateString(string str, int n) {
//先对整个字符串进行翻转
int size = str.size();
Reversestr(str, 0, size - 1);
//再对每一部分分别进行翻转
//翻转0 - size-n-1
Reversestr(str, 0, size - n - 1);
//翻转size-n - size-1
Reversestr(str, size - n, size - 1);
return str;
}
void Reversestr(string &str, int start, int end)
{
while (start <= end)
{
int temp = str[start];
str[start++] = str[end];
str[end--] = temp;
}
}

};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  剑指offer 面试 算法