345. 反转字符串中的元音字母

题目链接:https://leetcode-cn.com/problems/reverse-vowels-of-a-string/
执行用时:68 ms, 在所有 Swift 提交中击败了92.31% 的用户
内存消耗:15.9 MB, 在所有 Swift 提交中击败了38.46% 的用户

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class Solution {
func reverseVowels(_ s: String) -> String {
var chars = Array(s)
var left = 0, right = chars.count-1
var flag = false
let vowels: Set<Character> = ["A", "E", "I", "O", "U", "a", "e", "i", "o", "u"]
while left < right {
//左边遇到元音字符
flag = vowels.contains(chars[left])
if flag && vowels.contains(chars[right]) {
chars.swapAt(left, right)
left += 1
right -= 1
}else if flag {
right -= 1
}else {
left += 1
}
}
let str = String(chars)
return str
}
}

使用switch case 匹配的写法

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
class Solution {
func reverseVowels(_ s: String) -> String {
var chars = Array(s)
var left = 0, right = chars.count-1
var tmp:Character
var flag1 = false, flag2 = false
while left < right {
switch chars[left] {
case "a", "e", "i", "o", "u","A","E","I","O","U":
flag1 = true
default:
left += 1
flag1 = false
break
}
switch chars[right] {
case "a", "e", "i", "o", "u","A","E","I","O","U":
flag2 = true
default:
right -= 1
flag2 = false
break
}
if flag1 && flag2 {
chars.swapAt(left, right)
left += 1
right -= 1
}
}
let str = String(chars)
return str
}
}


345. 反转字符串中的元音字母
https://pisces34.github.io/2021/08/19/leetcode/345/
发布于
2021年8月19日
许可协议