매우 쉽게 풀 수 있는 문제인데 'replacingOccurences(of:with:)' 자체를 몰라서 너무 복잡하게 풀었다ㅠㅠ
replacingOccurence(of: with:)란?
func replacingOccurrences(of target: String, with replacement: String) -> String 로
target에는 교체할 대상, replacement 에는 교체할 값을 넣어
교체된 문자열이 반환되는 함수이다
예를 들어,
var test = "one4seveneight"
print(test.replacingOccurence(of:"one",with:"1")
과 같이 작성하면
14seveneight 이 출력된다.
따라서 위 함수를 사용하여 아래와 같이 풀 수 있다.
import Foundation
func solution(_ s:String) -> Int {
let numArray = ["zero","one","two","three","four","five","six","seven","eight","nine"]
var resultArray = s
for i in 0..<numArray.count {
resultArray = resultArray.replacingOccurrences(of: numArray[i], with: "\(i)")
print(resultArray)
}
return Int(resultArray)!
}
import Foundation
func solution(_ s:String) -> Int {
var testArray = s
var resultArray = ""
var index : String.Index
if !testArray.isEmpty {
index = testArray.index(testArray.startIndex, offsetBy: 1)
} else {
index = testArray.startIndex
}
func removeElements(times: Int) {
for _ in 0..<times {
testArray.removeFirst()
}
}
while !testArray.isEmpty {
for char in testArray {
if char == "z" {
resultArray.append("0")
removeElements(times: 4)
break
} else if char == "o" {
resultArray.append("1")
removeElements(times: 3)
break
} else if char == "t" {
if testArray[index] == "w" {
resultArray.append("2")
removeElements(times: 3)
} else {
resultArray.append("3")
removeElements(times: 5)
}
break
} else if char == "f" {
if testArray[index] == "o" {
resultArray.append("4")
removeElements(times: 4)
} else {
resultArray.append("5")
removeElements(times: 4)
}
break
} else if char == "s" {
if testArray[index] == "i" {
resultArray.append("6")
removeElements(times: 3)
} else {
resultArray.append("7")
removeElements(times: 5)
}
break
} else if char == "e" {
resultArray.append("8")
removeElements(times: 5)
break
} else if char == "n" {
resultArray.append("9")
removeElements(times: 4)
break
} else {
resultArray.append(testArray.removeFirst())
}
}
}
return Int(resultArray)!
}
왠지 억울하다ㅠ