リストに既に含まれている部分文字列に基づいて特定のリストを減らす最も効率的な方法を探しています。 'ABCD' および 'QRS' の両方が、そのリスト内の他の要素の最小のサブストリングであるため要素の部分文字列に基づいてリストを減らす
mylist = ['abcd','qrs']
:
mylist = ['abcd','abcde','abcdef','qrs','qrst','qrstu']
例えば
にまで低減されるであろう。私は約30行のコードでこれを行うことができましたが、そこには狡猾な1ライナーがあると思われます。
高レベルでは単純です:[radix tree](https://en.wikipedia.org/wiki/Radix_tree)を構築し、ルートの直接の子を取る(実際の要素を表します。ノードは、その欲望の最大の共通接頭辞です)。実際には、基数ツリーの適切な実装を追跡する必要があります。 [この質問](https://stackoverflow.com/questions/4707296/are-there-any-radix-patricia-critbit-trees-for-python)を参考にしてください。 – chepner
あなたはテストのより複雑な例を提供できますか? –
部分文字列は常に接頭辞であるはずですか? – DyZ