일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- swiftUI
- SWIFT
- pod install
- cocoapods
- Kotlin
- Appearance변경
- programmers
- ios
- UIStackView
- snapkit
- 코딩테스트
- ios15
- Java
- 백준
- AsyncImage
- UserDefaults
- CoreLocation
- kakaomap
- SwiftUI_Preview_Provider
- ViewModifier
- android
- EventKit
- segue
- MapKit
- NotificationCenter
- alamofire
- image
- autolayout
- format형식
- Alert
Archives
- Today
- Total
감자주먹밥
[LeetCode] 345. Reverse Vowels of a String 본문
728x90
"hello" 와 같은 문자열의 모음만 reverse 해서 반환하는 문제다.
class Solution {
func reverseVowels(_ s: String) -> String {
var result = s.map{String($0)}
var vowels = s.filter {
let temp = $0.lowercased()
if temp == "a" || temp == "e" || temp == "i" || temp == "o" || temp == "u" {
return true
} else {
return false
}
}
for (index, char) in result.enumerated() {
let temp = char.lowercased()
if temp == "a" || temp == "e" || temp == "i" || temp == "o" || temp == "u" {
result[index] = String(vowels.removeLast())
}
}
return result.joined()
}
}
먼저 문자열에서 모음만 따로 뺀 후, 원본 문자열을 처음부터 돌며 모음을 찾으면 모음문자열의 마지막 값을 주입해줬다.
대문자도 고려해야 했기에 lowercased 메서드를 사용해 무시를 했다.
하지만 이 방법은 통과는 됐지만, 메모리를 평균보다 많이 쓴 문제가 있었다. 속도도 평균이하 정도..
다른 사람의 솔루션을 보니 굳이 내가 한 선 처리를 할 필요가 없다는 걸 느꼈다.
class Solution {
func reverseVowels(_ s: String) -> String {
var s = Array(s)
let vowels: Set<Character> = ["a", "e", "i", "o", "u", "A", "E", "I", "O", "U"]
var (L, R) = (0, s.count-1)
while L < R {
if vowels.contains(s[L]) && vowels.contains(s[R]) {
s.swapAt(L, R)
L += 1
R -= 1
} else if vowels.contains(s[L]) {
R -= 1
} else if vowels.contains(s[R]) {
L += 1
} else {
L += 1
R -= 1
}
}
return String(s)
}
}
먼저 모음 템플릿을 만들어 놓고, 양 옆에서 하나씩 옮기면서 비교해 둘 다 모음이라면 교체해주는 작업이였다.
내 솔루션 보다 메모리를 훨씬 적게 쓰면서, 비교도 더 빨리 끝낼 수 있다.
728x90
'알고리즘' 카테고리의 다른 글
[LeetCode] 1431. Kids With the Greatest Number of Candies (0) | 2023.06.22 |
---|---|
[LeetCode] 1071. Greatest Common Divisor of Strings (0) | 2023.06.22 |
Comments