頭尾顛倒 反轉字串 Reverse String_Leetcode #344

更新於 2024/06/02閱讀時間約 3 分鐘

題目敘述 Reverse String

給定一個輸入字串陣列,要求我們反轉整個字串陣列,並且必須是in-place原位操作,只能使用O(1)常數空間的演算法來完成。


測試範例

Example 1:

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

Example 2:

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

約束條件

Constraints:

  • 1 <= s.length <= 10^5

輸入字串陣列長度介於1~十萬之間。

每個陣列元素都是可列印的ASCII字元


觀察

反轉整個字元,相當於順序顛倒,頭尾對調。

例如: hello <-> olleh


示意圖

raw-image



演算法 雙指針 Two pointers

建立左、右兩個指針,初始化呈第一個索引和最後一個索引。

每回合對調左右兩個指針對應到的字元,並且逐漸往中心靠攏,由外而內進行反轉


程式碼 雙指針 Two pointers

class Solution:
def reverseString(self, s: List[str]) -> None:

# one points to head position, the other points to tail position
left, right = 0, len(s)-1

# reverse string by two pointers
while left < right:

s[left], s[right] = s[right], s[left]

left,right = left+1, right-1

複雜度分析

時間複雜度: O(n)

最多只需要O(n/2)次對調,即可完成整個字串陣列的反轉。


空間複雜度: O(1)

使用的都是固定尺寸的臨時變數,所需空間為O(1)常數級別。


Reference:

[1] Reverse String - LeetCode

avatar-img
90會員
425內容數
由有業界實戰經驗的演算法工程師, 手把手教你建立解題的框架, 一步步寫出高效、清晰易懂的解題答案。 著重在讓讀者啟發思考、理解演算法,熟悉常見的演算法模板。 深入淺出地介紹題目背後所使用的演算法意義,融會貫通演算法與資料結構的應用。 在幾個經典的題目融入一道題目的多種解法,或者同一招解不同的題目,擴展廣度,並加深印象。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
動態規劃Dynamic Programming其實是 一種泛用的演算法思考方式與演算法建構框架。 動態規劃並不拘束於只能解課本上特定的的範例題。 只要我們能找出DP狀態定義、DP遞迴結構、初始條件(終止條件),就能適用動態規劃來解題,以數學的形式表達,並且在紙筆上或者電腦上、計算機上計算
本文章討論如何使用動態規劃和回頭查看技巧來計算最長遞增子序列的長度,並提供了相關的測試案例和範例。本文還包括了詳細的演算法和程式碼示例,以及時間和空間複雜度的分析。
題目敘述 Single Number II 給定一個輸入陣列,已知有一個烙單的數字,其他剩餘的數字都恰巧出現三次。 請找出這個烙單的數字。 題目額外提出限制,請使用O(n)線性時間、O(1)常數空間複雜度的演算法。 測試範例 Example 1: Input: nums = [2,2,
題目敘述 Single Number III 給定一個輸入陣列,已知有兩個烙單的數字,其他剩餘的數字都恰巧出現兩次。 請找出這兩個烙單的數字。 題目額外提出限制,請使用O(n)線性時間、O(1)常數空間複雜度的演算法。 測試範例 Example 1: Input: nums = [1,
本文章複習了滑動窗口Sliding window的框架, 並且使用滑動窗口來解修改後,最長相等子字串的長度。 給定兩個字串s和t,還有對應的預算上限cost。 每修改一個字元就要付出對應的ASCII Code距離成本。 請問修改後s 和 t 最長的相等子字串長度是多少?
給定一個輸入非負整樹陣列nums,請找出k值,使得陣列中恰好有k個元素大於等於 k。如果無解,回傳-1。尋找k值的方法包括排序法和二分搜尋法,時間複雜度都為O(n log n),空間複雜度為O(1)。關鍵知識點是當解空間具有遞增或遞減的性質時,可以用二分搜尋法加快搜尋效率。
動態規劃Dynamic Programming其實是 一種泛用的演算法思考方式與演算法建構框架。 動態規劃並不拘束於只能解課本上特定的的範例題。 只要我們能找出DP狀態定義、DP遞迴結構、初始條件(終止條件),就能適用動態規劃來解題,以數學的形式表達,並且在紙筆上或者電腦上、計算機上計算
本文章討論如何使用動態規劃和回頭查看技巧來計算最長遞增子序列的長度,並提供了相關的測試案例和範例。本文還包括了詳細的演算法和程式碼示例,以及時間和空間複雜度的分析。
題目敘述 Single Number II 給定一個輸入陣列,已知有一個烙單的數字,其他剩餘的數字都恰巧出現三次。 請找出這個烙單的數字。 題目額外提出限制,請使用O(n)線性時間、O(1)常數空間複雜度的演算法。 測試範例 Example 1: Input: nums = [2,2,
題目敘述 Single Number III 給定一個輸入陣列,已知有兩個烙單的數字,其他剩餘的數字都恰巧出現兩次。 請找出這兩個烙單的數字。 題目額外提出限制,請使用O(n)線性時間、O(1)常數空間複雜度的演算法。 測試範例 Example 1: Input: nums = [1,
本文章複習了滑動窗口Sliding window的框架, 並且使用滑動窗口來解修改後,最長相等子字串的長度。 給定兩個字串s和t,還有對應的預算上限cost。 每修改一個字元就要付出對應的ASCII Code距離成本。 請問修改後s 和 t 最長的相等子字串長度是多少?
給定一個輸入非負整樹陣列nums,請找出k值,使得陣列中恰好有k個元素大於等於 k。如果無解,回傳-1。尋找k值的方法包括排序法和二分搜尋法,時間複雜度都為O(n log n),空間複雜度為O(1)。關鍵知識點是當解空間具有遞增或遞減的性質時,可以用二分搜尋法加快搜尋效率。
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
如果這是一本BL言情小說,那麼他的次類型會是「強強、主受」,關鍵字會是「黑道、軍警、民初」--華人堂口大老與殖民政府洋人警官的虐戀情深。 他又更像是杜琪峰2005年作品《黑社會》的變形版,四九仔與當權者之間的關係:哪裡來的洪門反清復明,誰當權誰就是主子。
上緯為控股公司 投資有1.上緯新材料科技(股)公司(上緯新材料)2.上偉碳纖複合材料(股)公司(上偉碳纖) 3.上緯創新育成(股)公司(上緯創新育成) 其主營業務分別為特用化學品、碳纖複合材料、創新材料前瞻研發與新事業孵化 2023年營收7,294,813(yoy-25
Thumbnail
偉詮電,最近貌似轉強,拼創高 如果可以,理想的進場時機,是這個地方,對嗎? 說實話,讓我買在回檔最低點,我放棄。 但如果買在次低點,比如說這天,也就是11/13日,是不是也不錯? 理想很豐滿,那現實有沒有可能呢? 我們檢查對話紀錄,11/13這天,盤中我們非常明確的抓出進場訊號,對嗎?
Thumbnail
台股今天集中市場和櫃買市場走勢分歧,集中市場開低走低、櫃買市場則是開平走高,收盤時集中市場指數微幅跌破月線、櫃買市場指數則是維持在月線之上。明天起,上市櫃公司陸續在10日前公布8月份營收數據,未來幾天營收數據會是台股的焦點。
Thumbnail
今日集中市場、櫃買市場指數同時站上月線,成交量雖然沒有明顯放大,但是今天看到三大法人在集中、櫃買市場同步都是買超。從今天上漲、紅K的家數都遠大於下跌、黑K的家數,漲停家數也變多了,可以看的出來市場活絡的程度相較於前幾日,已經有所提升。
Thumbnail
《一家子兒咕咕叫》其實可以不讓阿欽師如此的令人厭惡,將其情可憫的那一面提煉出來,可是整部電影卻讓人感受到一個既自卑又自大的男人是如何將自己的苦痛加諸於妻女身上。 或許就是因為現實生活真的有這樣失職的丈夫與父親,以及任勞任怨、一味隱忍的妻子,所以使我憤怒的想破口大罵的,是這該死的超寫實作品吧!
Thumbnail
杜老爺又到了保養時間 , 1個月跑5千公里的業務 原廠新品尾門鍍鉻飾板 , 原廠日本原裝進口件不便宜 新品更換完成 本次保養套餐 固定扣更換新品 起動馬達和負極線束更換 , 小朋友不要學 , 車主換好玩的 電樁頭更換新品 舊線束 本次保養里程315028公里
健康寫實影片一方面傳達了社會平穩和樂與進步的訊息,另一方面亦展現了社會底層生活的寫實面給觀眾,兩者之間的聚焦與比例需要恰到好處,不能戳破烏托邦的泡泡,同時也不能將社會現實面完全隱藏起來。
Thumbnail
因為地方誌的採訪編輯工作,最近陸續拜訪了幾個織品加工業。一開始有些排斥訪毛巾產業的相關產業,總覺得是個太直接可見的題目。後來因為專案合作上的需求,陸續認識了幾位織品加工業的前輩,才發現這裡有太多的過往故事值得被聆聽。就這樣,我們開啟了這個記錄土地故事的計畫。
Thumbnail
本文章要跟大家介紹第6堂課:台股美股常用委託訂單簡介。不知道大家有沒有朋友是在台股下單原本要下賣出漲停價, 結果按成買進漲停價, 想當然委託單光速成交, 結果帳上不只沒賣掉庫存, 反而還多買一張, 真的很讓人欲哭無淚。所以了解怎麼正確下單是很重要的
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
如果這是一本BL言情小說,那麼他的次類型會是「強強、主受」,關鍵字會是「黑道、軍警、民初」--華人堂口大老與殖民政府洋人警官的虐戀情深。 他又更像是杜琪峰2005年作品《黑社會》的變形版,四九仔與當權者之間的關係:哪裡來的洪門反清復明,誰當權誰就是主子。
上緯為控股公司 投資有1.上緯新材料科技(股)公司(上緯新材料)2.上偉碳纖複合材料(股)公司(上偉碳纖) 3.上緯創新育成(股)公司(上緯創新育成) 其主營業務分別為特用化學品、碳纖複合材料、創新材料前瞻研發與新事業孵化 2023年營收7,294,813(yoy-25
Thumbnail
偉詮電,最近貌似轉強,拼創高 如果可以,理想的進場時機,是這個地方,對嗎? 說實話,讓我買在回檔最低點,我放棄。 但如果買在次低點,比如說這天,也就是11/13日,是不是也不錯? 理想很豐滿,那現實有沒有可能呢? 我們檢查對話紀錄,11/13這天,盤中我們非常明確的抓出進場訊號,對嗎?
Thumbnail
台股今天集中市場和櫃買市場走勢分歧,集中市場開低走低、櫃買市場則是開平走高,收盤時集中市場指數微幅跌破月線、櫃買市場指數則是維持在月線之上。明天起,上市櫃公司陸續在10日前公布8月份營收數據,未來幾天營收數據會是台股的焦點。
Thumbnail
今日集中市場、櫃買市場指數同時站上月線,成交量雖然沒有明顯放大,但是今天看到三大法人在集中、櫃買市場同步都是買超。從今天上漲、紅K的家數都遠大於下跌、黑K的家數,漲停家數也變多了,可以看的出來市場活絡的程度相較於前幾日,已經有所提升。
Thumbnail
《一家子兒咕咕叫》其實可以不讓阿欽師如此的令人厭惡,將其情可憫的那一面提煉出來,可是整部電影卻讓人感受到一個既自卑又自大的男人是如何將自己的苦痛加諸於妻女身上。 或許就是因為現實生活真的有這樣失職的丈夫與父親,以及任勞任怨、一味隱忍的妻子,所以使我憤怒的想破口大罵的,是這該死的超寫實作品吧!
Thumbnail
杜老爺又到了保養時間 , 1個月跑5千公里的業務 原廠新品尾門鍍鉻飾板 , 原廠日本原裝進口件不便宜 新品更換完成 本次保養套餐 固定扣更換新品 起動馬達和負極線束更換 , 小朋友不要學 , 車主換好玩的 電樁頭更換新品 舊線束 本次保養里程315028公里
健康寫實影片一方面傳達了社會平穩和樂與進步的訊息,另一方面亦展現了社會底層生活的寫實面給觀眾,兩者之間的聚焦與比例需要恰到好處,不能戳破烏托邦的泡泡,同時也不能將社會現實面完全隱藏起來。
Thumbnail
因為地方誌的採訪編輯工作,最近陸續拜訪了幾個織品加工業。一開始有些排斥訪毛巾產業的相關產業,總覺得是個太直接可見的題目。後來因為專案合作上的需求,陸續認識了幾位織品加工業的前輩,才發現這裡有太多的過往故事值得被聆聽。就這樣,我們開啟了這個記錄土地故事的計畫。
Thumbnail
本文章要跟大家介紹第6堂課:台股美股常用委託訂單簡介。不知道大家有沒有朋友是在台股下單原本要下賣出漲停價, 結果按成買進漲停價, 想當然委託單光速成交, 結果帳上不只沒賣掉庫存, 反而還多買一張, 真的很讓人欲哭無淚。所以了解怎麼正確下單是很重要的