刷题-左旋转字符串

Posted on 2022-02-03 23:55  AcTourist  阅读(39)  评论(0)    收藏  举报

一、题目

 

 

二、重点难点分析

  要找到字符串旋转时每个字符移动的规律,不是一件很轻松的事情;我们可以划分两个部分,一个部分是题目要求旋转的数,第二个部分是不需要旋转但是需要移动。我们先分别旋转这两部分(例子:abcdefg),旋转完后变成:ba gfedc;然后翻转整个字符串:cdefg ab,就得到答案。综上所述:我们需要翻转三次,就可以得到答案。

  根据函数reverse,写一个js的函数reverse,我们先把字符串放到一个数组里,因为是两个部分,所以我们设置两个指针为我们服务。

三、代码展示

 1 /**
 2  * @param {string} s
 3  * @param {number} n
 4  * @return {string}
 5  */
 6 var reverseLeftWords = function(s, n) {
 7     const reverse = ( s , left , right ) =>{
 8         let starr = s.split('');
 9         for(; left < right ; left++, right-- ){
10             [starr[left], starr[right]] = [starr[right], starr[left]];
11         }
12         return starr.join('');
13     }
14         s = reverse(s,0,n-1);//把需要移动到后面的,进行翻转
15         s = reverse(s,n,s.length-1);//把不需要移动的,进行翻转
16         return reverse(s,0,s.length-1);//全部进行翻转
17 };