搜索作为搜索字符串前缀的最长字符串的数组

Search Array for Longest String that is a Prefix of Search String

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

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

例如,如果我的数组是:

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

我的搜索字符串是:

let searchString = "16493884777"

我希望结果是 "1649"

我找不到另一个有 swift 解决方案的 SO 问题。

您可以从末尾开始遍历前缀数组(假设前缀数组已排序),如果匹配则立即 return 因为该前缀将保证是自另一个匹配前缀以来最长的不能存在相同长度的:

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