[LeetCode] 345. Reverse Vowels of a String

扶醉桌前 提交于 2020-03-06 04:43:20

反转字符串中的元音字母。题干即是题意。例子,

Example 1:

Input: "hello"
Output: "holle"

Example 2:

Input: "leetcode"
Output: "leotcede"

思路基本同344题。不同之处在于344题要求不能使用额外空间,但是本题非得使用额外空间才能解决,不仅需要hashset,也需要将input先转成数组才能判断。

时间O(n)

空间O(n) - hashset

 1 /**
 2  * @param {string} s
 3  * @return {string}
 4  */
 5 var reverseVowels = function (s) {
 6     // corner case
 7     if (s === null || s.length === 0) return '';
 8 
 9     // normal case
10     let res = s.split('');
11     let vowels = new Set(['a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U']);
12     let left = 0;
13     let right = s.length - 1;
14     while (left < right) {
15         while (left < right && !vowels.has(res[left])) {
16             left++;
17         }
18         while (left < right && !vowels.has(res[right])) {
19             right--;
20         }
21         let temp = res[left];
22         res[left] = res[right];
23         res[right] = temp;
24         left++;
25         right--;
26     }
27     return res.join('');
28 };

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!