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时对调.

Note: 对调完要再移动双指针.

若用到Array.asList(arr), arr 这里要用Character型,而不是char型. 

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

AC Java:

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

 

转载于:https://www.cnblogs.com/Dylan-Java-NYC/p/5812211.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值