【发布时间】:2020-08-16 13:35:13
【问题描述】:
任何人都可以用 swift 编写比下面更容易阅读的运行长度编码代码,或者至少解释一下我从 rosettecode.org 获得的代码吗? 这是输入输出和代码
// "WWWBWW" -> [(3, W), (1, B), (2, W)]
func encode(input: String) -> [(Int, Character)] {
return input.characters.reduce([(Int, Character)]()) {
if $0.last?.1 == $1 { var r = $0; r[r.count - 1].0++; return r }
return $0 + [(1, $1)]
}
}
【问题讨论】:
-
那是相当糟糕的代码,不要用作参考。非常适合打代码高尔夫,完全是为了解决一个简单的问题而写的令人麻木的复杂。再加上它很旧,前缀和后缀递增/递减运算符(
++,--)已在一段时间前从 Swift 中删除。