專欄 | 九章演算法
網址 | www.jiuzhang.com
題目描述
完成一個函式,讀入一個字串,把其中的母音字母反轉,返回反轉後的字串。
Example 1:
s = "hello", 返回 "holle".
Example 2:
s = "leetcode", 返回 "leotcede".
解題思路分析
如果考慮一個更簡單的問題:如何反轉一個字串,相信大家都能馬上想到演算法,因為我們知道每個位置的字元在反轉後會出現在什麼位置。
方法一 翻轉id
本題中只需要反轉母音字母,同樣的,我們希望知道每個母音字母在反轉後應該出現在什麼位置。因此我們用一個position陣列記錄母音字母的位置,然後進行反轉即可。演算法複雜度為O(N),N是字串長度。
方法二 兩個指標的方法
本題還有另外一種思路,那就是two pointer。一個指標從前往後掃描,一個指標從後往前掃描,遇到母音字母是進行交換,直到兩個指標相遇,演算法終止。演算法複雜度同樣是O(N)。
參考程式
解題思路分析
這題在所有面試的題目中屬於easy型別的題目,給出時間複雜度為O(N)(N為字串長度)的演算法可以進入到下一個階段(面試官會給出更難的題目)。
推薦閱讀:
- 網申時, 是否需要 cover letter (求職信) ?
- 2017年最受歡迎的程式語言有哪些?
- HR 揭祕: 10 個掛掉 Offer 的原因
- Google offer 如何談判?聽聽 Google recruiter 怎麼說!
- 面試遇到做過的題怎麼辦?
- Snapchat 面經 | LA 總部面試體驗
- 面試前如何瞭解一家IT企業?試試官方技術部落格!
- 網際網路歷史上最有創意的 7 份簡歷
- 利用 Twitter 找工作 | 如何尋找招聘資訊
- Facebook 電面+Onsite面經
歡迎關注我的微信公眾號:九章演算法(ninechapter)。
精英程式設計師交流社群,定期釋出面試題、面試技巧、求職資訊等