《剑指 offer》 左旋转字符串

题目描述

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

题解

原理:$YX = (X^TY^T)^T$
1.先翻转前半部分
2.再翻转后半部分
3.再对字符串整个进行翻转

代码

function LeftRotateString(str, n)
{
    // write code here

    if(str==null||str.length==0){
        return "";
    }

    let len=str.length;
    n=n%len;
    str=reverseStr(str.slice(0,n))+str.slice(n);
    str=str.slice(0,n)+reverseStr(str.slice(n));
    str=reverseStr(str);
    return str;
}

function reverseStr(str){
    return str.split("").reverse().join("");
}

   转载规则


《《剑指 offer》 左旋转字符串》 李冉 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
《剑指 offer》 扑克牌顺子 《剑指 offer》 扑克牌顺子
题目描述LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)…他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王
下一篇 
《剑指 offer》 和为s的正整数序列 《剑指 offer》 和为s的正整数序列
题目小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,1
  目录