[LeetCode] Reverse Vowels of a String

題目:Reverse Vowels of a String
難度:Easy

題目要求要交換母音位置,使用 two pointer 方法,一個在頭一個在尾
要注意的是題目有說字串 consist of printable ASCII characters,所以母音字串表要包含大寫及小寫的字母
因會遍歷整個字串一次.故時間複雜度為 O(N),N 為字串長度;因有用一個矩陣儲存結果,故空間複雜度為 O(N),N 為字串長度

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
public class Solution {
public string ReverseVowels(string s) {
char[] word = s.ToCharArray(0,s.Length);
int start = 0;
int end = s.Length - 1;
String vowels = "aeiouAEIOU";

while (start < end)
{
// 從頭開始找母音
while (start < end && vowels.Contains(word[start]) == false)
{
start++;
}

// 從尾開始找母音
while (start < end && vowels.Contains(word[end]) == false)
{
end--;
}

// 交換母音
char tmp = word[end];
word[end] = word[start];
word[start] = tmp;

// 繼續尋找下一組母音
start++;
end--;
}

var ans = new String(word);
return ans;
}
}

Comments