我有两个字符串(它们最终将在一个简单的数据库中描述),让我们说它们是
>字符串A:“Apple orange coconut lime jimmy buffet”
>字符串B:“汽车
自行车滑板“
我正在寻找的是这个.我想要一个输入“cocnut”的函数,输出为“String A”
我们可能在资本化方面存在差异,拼写并不总是存在.如果你愿意的话,目标是“快速而肮脏”的搜索.
是否有任何.net(或第三方),或为字符串推荐’相似算法’,所以我可以检查输入是否有“非常接近的片段”并返回它?我的数据库将有50个条目,顶部.
解决方法
您正在搜索的内容称为两个字符串之间的
edit distance.有很多实现 –
here’s one from Stack Overflow itself.
由于您只搜索字符串的一部分,因此您需要的是本地最佳匹配,而不是此方法计算的全局匹配.
这被称为local alignment problem,再一次它可以通过几乎相同的算法轻松解决 – 唯一改变的是初始化(我们不会惩罚搜索字符串之前的任何内容)和选择最佳值(我们不知道) t惩罚搜索字符串后面的任何内容).