LeetCode Reverse Vowels of a String

Posted Dylan_Java_NYC

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode Reverse Vowels of a String相关的知识,希望对你有一定的参考价值。

原题链接在这里:https://leetcode.com/problems/reverse-vowels-of-a-string/

题目:

Write a function that takes a string as input and reverse only the vowels of a string.

Example 1:
Given s = "hello", return "holle".

Example 2:
Given s = "leetcode", return "leotcede".

Note:
The vowels does not include the letter "y".

题解:

典型的two pointers, 到了vowel时对调.

Time Complexity: O(s.length()). Space:O(s.length()), 因为建立了char array.

AC Java:

 1 public class Solution {
 2     public String reverseVowels(String s) {
 3         HashSet<Character> hs = new HashSet<Character>();
 4         hs.add(‘A‘);
 5         hs.add(‘a‘);
 6         hs.add(‘E‘);
 7         hs.add(‘e‘);
 8         hs.add(‘I‘);
 9         hs.add(‘i‘);
10         hs.add(‘O‘);
11         hs.add(‘o‘);
12         hs.add(‘U‘);
13         hs.add(‘u‘);
14         
15         char [] charArr = s.toCharArray();
16         int i = 0;
17         int j = charArr.length-1;
18         while(i<j){
19             while(i<j && !hs.contains(charArr[i])){
20                 i++;
21             }
22             while(i<j && !hs.contains(charArr[j])){
23                 j--;
24             }
25             if(i<j){
26                 swap(charArr, i, j);
27                 i++;
28                 j--;
29             }
30         }
31         
32         return new String(charArr);
33      }
34      
35      private void swap(char [] arr, int i, int j){
36          char temp = arr[i];
37          arr[i] = arr[j];
38          arr[j] = temp;
39      }
40 }

 

以上是关于LeetCode Reverse Vowels of a String的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode Reverse Vowels of a String

[LeetCode]345 Reverse Vowels of a String

LeetCode 345. Reverse Vowels of a String

Leetcode 345. Reverse Vowels of a String

Leetcode: Reverse Vowels of a String

Reverse Vowels of a String Leetcode