Pie*_*rce 6 arrays string ios swift
因此,我正在尝试通过HackerRank的测试用例样本为编码采访做好准备.如果您熟悉该过程,通常会采用具有各种字符串的标准输入,并根据问题的要求提取信息.我遇到过很多问题,他们会给你一行(作为a String),用n空格分隔整数(即1 2 3 4 5).为了解决这个问题,我需要从a中推断一个Int([Int])数组String.我想出了这个漂亮的方法:
func extractIntegers(_ s: String) -> [Int] {
let splits = s.characters.split { [" "].contains(String($0)) }
return splits.map { Int(String($0).trimmingCharacters(in: .whitespaces))! }
}
Run Code Online (Sandbox Code Playgroud)
所以我在我的Playground中对它进行编码并且它工作得非常好,我甚至运行了多个我组成的测试用例,并且它们都以漂亮的颜色传递......然后我将代码复制到HackerRank并尝试运行它以供提交.我得到了这个:
solution.swift:16:29: error: value of type 'String' has no member 'trimmingCharacters'
return splits.map { Int(String($0).trimmingCharacters(in: .whitespaces))! }
Run Code Online (Sandbox Code Playgroud)
所以......好吧,HR还没有为Swift 3更新所有东西.没什么大不了!我有一个更清洁的解决方案的想法!这里是:
func extractIntegers(_ s: String) -> [Int] {
return s.components(separatedBy: " ").map { Int($0)! }
}
Run Code Online (Sandbox Code Playgroud)
...... AAAAANDDD当然:
solution.swift:15:12: error: value of type 'String' has no member 'components'
return s.components(separatedBy: " ").map { Int($0)! }
Run Code Online (Sandbox Code Playgroud)
所以现在我被迫使用一个非常草率的方法,我循环遍历所有字符,检查空格,将空格中的子串附加到数组中,然后映射该数组并返回它.
有没有人有任何其他干净的想法来解决HR与Swift的不足之处?我想要任何我能得到的建议!
提前致谢!
Mar*_*n R 11
该String方法
func trimmingCharacters(in set: CharacterSet) -> String
func components(separatedBy separator: String) -> [String]
Run Code Online (Sandbox Code Playgroud)
实际上是NSString类的方法,在Foundation框架中定义,并"桥接"到Swift.因此,要编译代码,您需要添加
import Foundation
Run Code Online (Sandbox Code Playgroud)
但是第一个方法的略微简化版本使用纯Swift编译,而不导入Foundation.我处理前导,尾随和中间空格:
func extractIntegers(_ s: String) -> [Int] {
let splits = s.characters.split(separator: " ").map(String.init)
return splits.map { Int($0)! }
}
let a = extractIntegers(" 12 234 -567 4 ")
print(a) // [12, 234, -567, 4]
Run Code Online (Sandbox Code Playgroud)
更新为夫特4(和简化):
func extractIntegers(_ s: String) -> [Int] {
return s.split(separator: " ").compactMap { Int($0) }
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
563 次 |
| 最近记录: |