搜索数组中最长的字符串,它是搜索字符串的前缀

时间:2019-06-18 19:10:53

标签: swift string search startswith

我是Swift的新开发人员。我正在使用Swift 4.2和Xcode 10.2。

我想在一个数组中搜索与我的搜索字符串相比具有最多字符的单个结果。更具体地说,我需要数组中最长的字符串,它是搜索字符串的前缀。

例如,如果我的数组是:

let array = ["1", "13", "1410", "1649", "1670"]

我的搜索字符串是:

let searchString = "16493884777"

我希望结果为"1649"

我找不到另一个可以迅速解决的问题。

1 个答案:

答案 0 :(得分:2)

您可以从头开始遍历前缀数组(假设前缀数组已排序)并在遇到匹配项时立即返回,因为该前缀将被保证是最长的,因为不存在另一个相同长度的匹配前缀:

import Foundation

func longestMatchingPrefix(_ prefixArray: [String], _ searchString: String) -> String {
    for p in prefixArray.reversed() {
        if searchString.hasPrefix(p) {
           return p
        }
    }
    return "No matching prefix found"
}

print(longestMatchingPrefix(["1", "13", "1410", "1649", "1670"], "16493884777"))

输出:

1649