I'm getting an Xcode error
Global function 'zip' requires that 'String.Element' (aka 'Character') conform to 'Sequence'
on array[i] = zip(array[i], arrayOfZeros)
func expandedForm(_ num: Int) -> String {
let lenght = String(num).count
var array = Array(String(num))
var i = 0
while array.count > i {
let numberOfZeros = array.count - 1 - i
let arrayOfZeros = Array(repeating: "0", count: numberOfZeros)
let string = array[i]
array[i] = zip(array[i], arrayOfZeros)
i = 1
}
return ""
}
I'm trying to merge two array of strings, but I think they are not the same type. Need some help on this.
CodePudding user response:
func expandedForm(_ num: Int) -> String {
let lenght = String(num).count
var array = Array(String(num))
var i = 0
while array.count > i {
let numberOfZeros = array.count - 1 - i
let arrayOfZeros = Array(repeating: "0", count: numberOfZeros)
let string = array[i]
array[i] = zip(array[i], arrayOfZeros)
i = 1
}
return ""
}
You have some issues.
var array = Array(String(num)), if you pass your cursor on array, it's a [String.Element], ie a [Character], an array a Character.
So let string = array[i], that's misleading, because array[i] is a Character, not a String.
zip(_:_:) awaits for two sequences (~array), and you give as first parameter a Character.
Possible solutions:
Make array, a real array of String:
var array = Array(String(num)).map { String($0) }
And then:
array[i] = array[i] arrayOfZeros.joined()
Or create a new variable var output that will be an array of String:
var output: [String] = []
And populate it:
output.append(String(array[i] arrayOfZeros.joined())
