swift - 在数组中搜索作为搜索字符串前缀的最长字符串

标签 swift string search startswith

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

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

例如,如果我的数组是:

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

我的搜索字符串是:

let searchString = "16493884777"

我希望结果为“1649”

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

最佳答案

您可以从末尾迭代前缀数组(假设前缀数组已排序),并在匹配时立即返回,因为该前缀将保证是最长的,因为不能存在另一个相同长度的匹配前缀:

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

关于swift - 在数组中搜索作为搜索字符串前缀的最长字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56655596/

相关文章:

javascript - 如何在表格搜索中显示多个单元格

ios - 在 Swift 中丢失对实例属性的引用

ios - 如何快速测量带宽

string - 使用 `pop3::POP3Stream::connect` 连接到给定 `host` 的运行时?

ios - 获取键的方法 JSON 响应(字符串)编码投诉

elasticsearch - 使用ElasticSearch搜索时指定索引黑名单

ios - 为什么我的 Xcode 无法验证 swift iOS 项目

ios - 使用 Segue 的主细节 View

c - 我如何在 C 中打印一个字符串,使其显示像\n、\o 等字符?

c# - 在 documentDB 中按子字符串搜索