「アウトプットと言う名の備忘録@Texas」

日本じゃない何処かの脳筋パイソニスタによる何かしらの走り書き

【海外エンジニア転職活動】Coding Interview鍛錬: 00.Recursion - Reverse String

問:配列:s を反転させる関数を作成せよ。

  • O(1)
  • 配列をin-placeで変更すること

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

解いてく

ちなみにpythonなら

s.reverse()


でクリアできてしまうが練習のため
とりあえずRecursion(再帰で攻めていく。

1. 配列の右端:r と左端:l から順番に位置を交換していく。
2. l < r が満たされる限り続ける。

解答

class Solution:
    def reverseString(self, s: List[str]) -> None:
        
        def helper(l, r, ls):
            if l < r:
                ls[l], ls[r] = ls[r], ls[l] 
                l+=1
                r-=1
                helper(l, r, ls)
        l, r = 0, len(s)-1
        
        helper(l, r, s)


と、こんな感じでコーディング鍛錬始めました!
ご意見、アドバイス等あればよろしくお願いいたします!