10. 문자열 겹쳐쓰기 (fin)
나의 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import Foundation
func solution(_ my_string:String, _ overwrite_string:String, _ s:Int) -> String {
var answer : String = ""
var arr : [String] = []
var arr1 : [String] = []
var n : Int = 0
arr = my_string.map{String($0)}
arr1 = overwrite_string.map{String($0)}
n = arr1.count + s-1
for i in s ... n {
arr[i] = arr1[i-s]
}
answer = arr.joined()
return answer
}
뒤로 미뤘던. 문자열에 index로 간단하게 접근을 해보려고 했으나 그게 되지 않아서 이것저것 찾아보게 되었다. index는 별도로 정리 하였음.
Retry 어떻게 풀어볼것인가?
- 정수 s 부터 overwrite_string.count 까지의 범위로 접근. 1-1. string자체를 slicing하여 가능한지 도전 -> 검색해보니 replacingOccurrences(of:with:)를 사용하여 간단하게 해결이 가능해보인다. 최근에 이런 메서드를 사용해서 푼 코드를 본것같은데 이번참에 한번 써봐야겠다.
1 2 3
let sampleStr = "12345" let newStr = sampleStr.replacingOccurrences(of: "2", with: "vv") print(newStr) // 1vv345
func solution(_ my_string:String, _ overwrite_string:String, _ s:Int) -> String {
1
2
3
4
5
6
7
8
9
10
11
12
var answer : String = ""
var o : String = ""
var start = my_string.index(my_string.startIndex, offsetBy:s)
var end = my_string.index(my_string.startIndex, offsetBy:overwrite_string.count+s)
o = my_string.substring(with: start..<end)
answer = my_string.replacingOccurrences(of:o, with: overwrite_string)
return answer
}
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
그게안될경우.
2. my_string과 overwrite_string을 배열로 바꾸어서 치환
결국 배열로 접근하여 문제를 풀었다.
---
다른코드
```swift
import Foundation
func solution(_ myString: String, _ overwriteString: String, _ s: Int) -> String {
var myString = Array(myString)
myString.replaceSubrange(s...(overwriteString.count+s-1), with: Array(overwriteString))
return String(myString)
}
//
import Foundation
func solution(_ my_string:String, _ overwrite_string:String, _ s:Int) -> String {
let a = my_string.prefix(s)
let b = overwrite_string
let c = my_string.suffix(my_string.count - overwrite_string.count - s)
return a + b + c
}
//
import Foundation
func solution(_ my_string:String, _ overwrite_string:String, _ s:Int) -> String {
return String(my_string.prefix(s))+overwrite_string+String(my_string.suffix(my_string.count-overwrite_string.count-s))
}
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.