【发布时间】:2017-01-17 19:11:20
【问题描述】:
所以我正在尝试通过做 HackerRank 的测试用例样本来为编码面试做好准备。如果您熟悉该过程,您通常会采用具有多行字符串的标准输入,然后根据问题的要求提取信息。我遇到过许多问题,他们会给你一行(String),其中n 整数个数用空格分隔(即1 2 3 4 5)。为了解决这个问题,我需要从String 中推断出Int ([Int]) 的数组。我想出了这个绝妙的方法:
func extractIntegers(_ s: String) -> [Int] {
let splits = s.characters.split { [" "].contains(String($0)) }
return splits.map { Int(String($0).trimmingCharacters(in: .whitespaces))! }
}
所以我在 Playground 中对其进行了编码,效果非常好,我什至运行了我编写的多个测试用例,它们都以优异的成绩通过了……然后我将代码复制到 HackerRank 并尝试运行它以进行提交。我明白了:
solution.swift:16:29: error: value of type 'String' has no member 'trimmingCharacters'
return splits.map { Int(String($0).trimmingCharacters(in: .whitespaces))! }
所以...好吧,也许 HR 还没有更新 Swift 3 的所有内容。没什么大不了的!我有一个更清洁的解决方案的想法!这里是:
func extractIntegers(_ s: String) -> [Int] {
return s.components(separatedBy: " ").map { Int($0)! }
}
....当然是 AAAAANDDD:
solution.swift:15:12: error: value of type 'String' has no member 'components'
return s.components(separatedBy: " ").map { Int($0)! }
所以现在我不得不使用一种非常草率的方法,循环遍历所有字符,检查空格,将空格之间的子字符串附加到数组中,然后映射该数组并返回它。
有没有人有任何其他干净的想法来解决 HR 与 Swift 的不足之处?我想要任何我能得到的建议!
提前致谢!
【问题讨论】:
-
这很奇怪。我在 HR 上尝试了您的两个功能,并且都按预期工作。 – 顺便说一句,你的问题中有很多与实际问题无关的文字,我建议删除。
-
@MartinR - 他们真的在为你工作吗?什么可能导致它对你有用,而不是我?
-
你可能忘了
import Foundation -
@MartinR - 哇,我觉得自己像个白痴。不好意思,昨天刚开始用HR,居然没想到要导入框架!谢谢!如果您想提交它作为答案,我很乐意接受。