剑指Offer 58 - II. 左旋转字符串

方法一: 字符串切割

直接切割字符串后将两个字符串倒置返回

1 /**
2  * @param {string} s
3  * @param {number} n
4  * @return {string}
5  */
6 var reverseLeftWords = function(s, n) {
7     return s.substr(n, s.length) + s.substring(0, n);
8 };

方法二:新字符串操作

初始化一个新字符串,遍历原字符串将翻转的内容填入新的字符串中

 1 /**
 2  * @param {string} s
 3  * @param {number} n
 4  * @return {string}
 5  */
 6 var reverseLeftWords = function(s, n) {
 7     let res = [];
 8     for(let i = n; i < s.length; i++) {
 9         res.push(s.charAt(i));
10     }
11     for(let i = 0; i < n; i++) {
12         res.push(s.charAt(i));
13     }
14     return res.join('');
15 };

使用取余法来简化代码

 1 /**
 2  * @param {string} s
 3  * @param {number} n
 4  * @return {string}
 5  */
 6 var reverseLeftWords = function(s, n) {
 7     let res = [];
 8     let j = 0;
 9     for(let i = n; i < n + s.length; i++) {
10         res[j++] = s.charAt(i % s.length); 
11     }
12     return res.join('');
13 };

 

posted @ 2021-09-03 22:06  雪之下。  阅读(35)  评论(0)    收藏  举报