Reverse String

題目

Write a function that reverses a string. The input string is given as an array of characters char[].

Do not allocate extra space for another array, you must do this by modifying the input array in-place with O(1) extra memory.

You may assume all the characters consist of printable ascii characters.

Example 1:

Input: ["h","e","l","l","o"]
Output: ["o","l","l","e","h"]

Example 2:

Input: ["H","a","n","n","a","h"]
Output: ["h","a","n","n","a","H"]

思路

  • 如何利用兩根指針進行交換

程式碼

class Solution {
    func reverseString(_ s: inout [Character]) {
      var i = 0
      var j = s.count - 1
      while (i < j) {
        // 兩根指針的交換
        var temp = s[i]
        s[i] = s[j]
        s[j] = temp
        i += 1
        j -= 1
      }
    }
}

複雜度

一個for loop搞定,交換次數n/2, 所以時間整體為O(n),需要額外i,j temp這3個指針進行儲存,空間為常數O(1)

Last updated

Was this helpful?