gpt4 book ai didi

swift - Swift3 中的 Levenshtein 距离

转载 作者:搜寻专家 更新时间:2023-11-01 05:56:07 41 4
gpt4 key购买 nike

我正在使用来自 Rosetta Code 的教程计算 Levenshtein 距离。他们的代码似乎在 Swift2 中,所以我收到此错误 Binary operator '+' cannot be applied to operands of type '[Int]' and 'Repeated<String.CharacterView>'这样做时:var cur = [i + 2] + empty其中 let empty = repeatElement(s, count: 0) .我该怎么做?

最佳答案

需要进行一些更改。

  • 构造空数组。
  • enumerate() 现在是 enumerated()
  • successor() 不再存在,所以我用 +1 替换了它

所以现在的功能是

swift 4:

func levDis(_ w1: String, _ w2: String) -> Int {
let empty = [Int](repeating:0, count: w2.count)
var last = [Int](0...w2.count)

for (i, char1) in w1.enumerated() {
var cur = [i + 1] + empty
for (j, char2) in w2.enumerated() {
cur[j + 1] = char1 == char2 ? last[j] : min(last[j], last[j + 1], cur[j]) + 1
}
last = cur
}
return last.last!
}

swift 3:

func levDis(w1: String, w2: String) -> Int {

let (t, s) = (w1.characters, w2.characters)

let empty = Array<Int>(repeating:0, count: s.count)
var last = [Int](0...s.count)

for (i, tLett) in t.enumerated() {
var cur = [i + 1] + empty
for (j, sLett) in s.enumerated() {
cur[j + 1] = tLett == sLett ? last[j] : min(last[j], last[j + 1], cur[j])+1
}
last = cur
}
return last.last!
}

关于swift - Swift3 中的 Levenshtein 距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44102213/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com