题目描述:

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

解题思路:

  • 这道题不管将字符串转换为数组也好,直接用两个字符串拼接也好,唯一需要注意的是,也是与题目无关……
  • 就是初始判断条件为if(!str) return ‘’;(很奇怪)

解题代码:

  • 法一:

    1. function LeftRotateString(str, n)
    2. {
    3. // write code here
    4. if(!str) return ''; // 注意这里一定要返回一个空的字符串
    5. let arr = str.split('');
    6. let preArr = arr.splice(0,n);
    7. return arr.concat(preArr).join('');
    8. }
  • 法二:

    1. function LeftRotateString(str, n)
    2. {
    3. // write code here
    4. if(!str) return '';
    5. let preStr = str.substr(0,n);
    6. let nexStr = str.slice(n);
    7. return nexStr + preStr;
    8. }