【问题标题】:How can I return a combined Int from an [Int] array? [duplicate]如何从 [Int] 数组返回组合的 Int? [复制]
【发布时间】:2020-09-17 10:41:14
【问题描述】:

我有一个像这样的[Int] 数组:

[1, 2, 3]

如何在此应用一个函数以使其返回:

123

?

【问题讨论】:

标签: swift


【解决方案1】:
let nums = [1, 2, 3]
let combined = nums.reduce(0) { ($0*10) + $1 }
print(combined)

注意事项

  • 确保Int 在数字过长时不会溢出(在 64 位系统上为 +263)。
  • 您还需要注意列表中的所有数字都不超过 9(单个以 10 为基数的数字),否则该算法将失败。使用String 连接技术确保正确处理所有以10 为基数的数字。但是,您需要再次注意,如果您选择将其转换回 Int,数字不会溢出。

【讨论】:

  • @JoakimDanielson 它使示例复杂化,如果仅用于像 OP 演示这样的小型用例,则不是问题(还有多种可能的故障模式,取决于 OP 的用例) .
  • 是的,你是对的,一开始就是误导。
  • 这假定集合中的所有整数都是从 0 到 9。[1, 2, 32] 将导致 152
  • @LeoDabus 非常正确。答案已编辑。
【解决方案2】:

我们可以像下面这样......

var finalStr = ""
    [1,2,3].forEach {
        finalStr.append(String($0))
    }
    if let number = Int(finalStr) {
        print(number)
    }

【讨论】:

  • 这可以使用map进行简化:let number = Int([1,2,3].map(String.init).joined())
猜你喜欢
  • 2015-06-03
  • 1970-01-01
  • 2012-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-02
相关资源
最近更新 更多