Похоже, вы пытаетесь представить это длинное число, 88553344
, как массив значений, [88, 55, 33, 44]
.Т.е., если вы искали 53
, я предполагаю, что вы не захотите возвращать какое-либо значение.Если это так, я бы сделал это преобразование в массив, а затем произвел бы поиск:
public func solution(_ value1 : Int, _ value2 : Int) -> Int? {
var array: [Int] = []
var remainder = value2
while remainder != 0 {
array.insert(remainder % 100, at: 0)
remainder /= 100
}
return array.firstIndex { $0 == value1 }
.flatMap { $0 + 1 }
}
Или, если вы не хотите опционально и хотите представить «не найден» как, например, ноль, вы могли бы сделать:
public func solution(_ value1 : Int, _ value2 : Int) -> Int {
var array: [Int] = []
var remainder = value2
while remainder != 0 {
array.insert(remainder % 100, at: 0)
remainder /= 100
}
return array.firstIndex { $0 == value1 }
.flatMap { $0 + 1 } ?? 0
}
Обратите внимание, что использование 0
в качестве магического значения часового, как правило, не рекомендуется, но я делаю вывод из вашего индекса на основе 1, что это может быть желательным.Используйте любое значение после оператора nil
коалесцирования, ??
, которое вы хотите.Лично я бы придерживался опций.
Лично, поскольку мы живем в мире индексов с нулевым индексом, я бы предложил, чтобы 88
было 0
, 55
должно быть1 и т. Д.: * 10101
public func solution(_ value1 : Int, _ value2 : Int) -> Int? {
var array: [Int] = []
var remainder = value2
while remainder != 0 {
array.insert(remainder % 100, at: 0)
remainder /= 100
}
return array.firstIndex { $0 == value1 }
}