
나의 코드
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를 사용해서 범위의 값을 바꾸려고했다.
하지만 구글의 힘을 빌릴 수 밖에 없었다.
아래 코드를 도움을 받았다.
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)
다른 코드를 보니 너무 간략하게 했다.
더 열심히 공부해야겠다.
다른코드
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()
}
PREVIOUS39. 9로 나눈 나머지
NEXT103. 가위 바위 보