专栏 | 九章算法
网址 | 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
推荐阅读: