反转数组

360 阅读1分钟

编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。

不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。

这是一个比较简单的字符 串反转问题,可直接使用 JS API , 循环交换, 双指针的方法解决

  • JS API
var reverseString = function(s) {
         return s.reverse()
 
};
  • 循环交换

通过遍历数组,交换 第 i 个 和 第 (数组长度 - i) 个元素,达到交换的目的。遍历长度为 Math.floor(数组长度 / 2).

var reverseString = function(s) {
     for (let index = 0 ; index < Math.floor(s.length / 2); index++) {
         let left = index
         let right = s.length - 1 - index
         let temp = s[left]
         s[left] = s[right]
         s[right] = temp
     }
}
  • 双指针

设置数组左右两个指针,进行交换。交换完毕后,左指针又移,右指针左移,直至两个指针相交,那么交换结束

   var reverseString = function(s) {
       let left = 0
        let right = s.length - 1
        while (left < right) {
            if (s[left] !== s[right]) {
                  let temp = s[left]
            s[left] = s[right]
            s[right] = temp 
            }

            left++
            right--
        }
   }

以上三种方法均可实现数组的反转。