6

私は2つの文字列を持っています(それらは最終的には単純なデータベースの説明になります)、それらが

  1. 文字列A:「アップルオレンジココナッツライムジミーバフェット」
  2. 文字列B:「車の自転車スケートボード」

私が探しているのはこれです。入力が「cocnut」で、出力が「StringA」の関数が必要です。

キャピタライゼーションに違いがある可能性があり、スペルが常に正確であるとは限りません。目標は、必要に応じて「迅速で汚い」検索です。

.net(またはサードパーティ)がありますか、または文字列に「類似性アルゴリズム」を推奨しているので、入力に「かなり近いフラグメント」があることを確認して返すことができますか?私のデータベースには、50のエントリ、トップスがあります。

4

1 に答える 1

12

あなたが探しているのは、2つの弦の間の編集距離として知られています。たくさんの実装があります– <ahref="https://stackoverflow.com/a/9454016/1968">これはStackOverflow自体からのものです。

文字列の一部のみを検索するため、このメソッドで計算されるグローバル一致ではなく、ローカルで最適な一致が必要になります。

これはローカルアラインメントの問題として知られており、ほぼ同じアルゴリズムで簡単に解決できます。変更されるのは、初期化(検索文字列の前にあるものにペナルティを課さない)と最適値の選択(検索文字列のに来るものにペナルティを課さないでください)。

于 2013-03-08T20:57:43.477 に答える