專欄 | 九章算法
網址 | www.jiuzhang.com程序員
題目描述面試
完成一個函數,讀入一個字符串,把其中的元音字母反轉,返回反轉後的字符串。算法
Example 1:
s = "hello", 返回 "holle".
Example 2:
s = "leetcode", 返回 "leotcede".編程
解題思路分析數組
若是考慮一個更簡單的問題:如何反轉一個字符串,相信你們都能立刻想到算法,由於咱們知道每一個位置的字符在反轉後會出如今什麼位置。微信
方法一 翻轉id
本題中只須要反轉元音字母,一樣的,咱們但願知道每一個元音字母在反轉後應該出如今什麼位置。所以咱們用一個position數組記錄元音字母的位置,而後進行反轉便可。算法複雜度爲O(N),N是字符串長度。編程語言
方法二 兩個指針的方法
本題還有另一種思路,那就是two pointer。一個指針從前日後掃描,一個指針從後往前掃描,遇到元音字母是進行交換,直到兩個指針相遇,算法終止。算法複雜度一樣是O(N)。函數
參考程序post
解題思路分析
這題在全部面試的題目中屬於easy類型的題目,給出時間複雜度爲O(N)(N爲字符串長度)的算法能夠進入到下一個階段(面試官會給出更難的題目)。ui
推薦閱讀: