字符串逆置,循环次数去重
汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!
做法:
有效左移次数 < 字符串长度 ===> num %= length
- 保存第一个,剩下的整体前移一个,第一个放在最后,完成一次移动,一次能移动,多次也可以
- 局部逆置 再整体逆置
- 双倍串(不推荐)
法一: 双循环
class Solution{
public:
void LeftRotateStringOne(string &str){
// 把字符串左旋一次
char c = str[0];// 先把第一个元素保存, 其他前移
int len = str.size();
// 左旋
int i = 0;
for (int i =