40. 문자열 여러 번 뒤집기
나의 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import Foundation
func solution(_ my_string:String, _ queries:[[Int]]) -> String {
var startNum : Int = 0
var endNum : Int = 0
var my_String : String = ""
var substring : String = ""
my_String = my_string
for i in 0 ... queries.count-1 {
startNum = queries[i][0]
endNum = queries[i][1]
let range = my_String.index(my_String.startIndex, offsetBy: startNum) ... my_String.index(my_String.startIndex, offsetBy: endNum)
substring = String(my_String[range].reversed())
my_String.replaceSubrange(range, with:substring)
}
return my_String
}
이렇게 생각한 이유.
reverse를 사용해서 범위의 값을 바꾸려고했다.
하지만 구글의 힘을 빌릴 수 밖에 없었다.
아래 코드를 도움을 받았다.
1
2
3
let range = my_String.index(my_String.startIndex, offsetBy: startNum) ... my_String.index(my_String.startIndex, offsetBy: endNum)
substring = String(my_String[range].reversed())
my_String.replaceSubrange(range, with:substring)
다른 코드를 보니 너무 간략하게 했다.
더 열심히 공부해야겠다.
다른코드
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import Foundation
func solution(_ my_string:String, _ queries:[[Int]]) -> String {
var my_string = Array(my_string)
queries.forEach {
my_string.replaceSubrange($0[0]...$0[1], with: Array(my_string[$0[0]...$0[1]].reversed()))
}
return String(my_string)
}
//
import Foundation
func solution(_ my_string:String, _ queries:[[Int]]) -> String {
var myString = my_string.map { String($0) }
queries.forEach { q in
myString[q[0]...q[1]].reverse()
}
return myString.joined()
}
//func solution(_ myString: String, _ queries: [[Int]]) -> String {
queries.reduce(myString) { acc, arr in
acc.prefix(arr[0]) + String(acc[acc.index(acc.startIndex, offsetBy: arr[0])...acc.index(acc.startIndex, offsetBy: arr[1])].reversed()) + acc.suffix(from: acc.index(acc.startIndex, offsetBy: arr[1] + 1))
}
}
import Foundation
func solution(_ my_string:String, _ queries:[[Int]]) -> String {
var s = my_string.map { $0 }
for q in queries {
let start = q[0]
let end = q[1]
let a = s[start...end].reversed().map { $0 }
s = s[0..<start] + a + s[end + 1..<s.endIndex]
}
return s.map { String($0) }.joined()
}
//
import Foundation
func solution(_ my_string:String, _ queries:[[Int]]) -> String {
return queries.reduce(into: my_string.map { String($0) }) { result, query in
let arr = result
for index in query[0]...query[1] {
result[index] = arr[query[0] + query[1] - index]
}
}.joined()
}
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.