切換
舊版
前往
大廳
主題

LeetCode - 344. Reverse String 解題心得

Not In My Back Yard | 2020-10-04 00:00:09 | 巴幣 2 | 人氣 194

題目連結:


題目意譯:
撰寫一個反轉一個字串的函式。輸入字串給定為一個字元陣列 char[] 之型態。

不要分配額外的空間給另一個陣列。你必須藉由更動原陣列,原地(In-Place)以 O(1) 額外記憶體空間將其實作出來。

你可以假設所有字元由可顯示的 ASCII 字元所組成。



範例測資:
範例 1:
輸入: ["h","e","l","l","o"]
輸出: ["o","l","l","e","h"]

範例 2:
輸入: ["H","a","n","n","a","h"]
輸出: ["h","a","n","n","a","H"]


解題思維:
令 L = 陣列長度。而我們要將陣列的內容反轉的話,只需跑一半即可,如下:

一開始交換第 0 個元素以及第 L - 1 個元素;接著交換第 1 個元素和第 L - 2 個元素……最後交換第 (L ÷ 2 向下取整) 個元素與第 (L ÷ 2 向上取整) 個元素。

如上,跑完之後即將所有元素移到所求的位置,也就達成了反轉。




此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。

創作回應

更多創作