これは、コマンドライン解析でかなり一般的なアルゴリズムです。事前定義された長いオプション名のセットが与えられた場合-これらのオプションの1つを一意に識別する最短のプレフィックスを計算します。たとえば、次のオプションの場合:
-help
-hostname
-portnumber
-name
-polymorphic
これは出力になります:
-he
-ho
-por
-n
-pol
私はこれを行うための2つの可能な方法を考えています-ツリーとしてのどちらか:
*
/ | \
/ | \
H N P
/ \ |
E O O
/ \
R L
または、部分文字列を検索して:
for (String s : strings) {
for (int i = 1; i < s.length(); s++) {
if (search(strings,s.substring(0,i)) == 1) {
result.add(s.substring(0,i);
break;
}
}
}
だから、質問は:
「ツリー」ソリューションは、パトリシアトライの特別なケースです(まあ、実際にはかなり一般的です)。
最初の方法は、一般的に検索が高速です。メモリの考慮事項は、永続的に使用されるわけではなく、「ルックアップ」を1回だけ実行するため、おそらくコンテキストには関係ありません。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加