N個の単語のセットと整数Kが与えられます。最初のk文字と最後のk文字がまったく同じである場合、2つの単語は同じグループに含まれます。同一のk文字を超える、または同一のk文字未満の場合、その単語は同じグループに含まれていません。例:k=3の場合。
「abcdefg」と「abczefg」は同じグループにあります
「abcddefg」と「abcdzefg」は同じグループにありません(最初のk + 1文字は同じです)
「abc」と「abc」は同じグループにあります
単語は複数のグループに含めることができます。例(k = 3):
「abczefg」と「abcefg」はグループを形成します
「abczaefg」と「abcefg」はグループを形成します
「abczaefg」と「abczefg」は同じグループにありません(最初のk + 1文字は同一です) )。
問題は、最大数の単語を含むグループの数を見つけるように私に求めます。
Trie(またはプレフィックスツリー)を使用することを考えました。これがこの問題の正しいデータ構造であると思いますが、2つの単語がk文字を超える部分があるため、この問題にどのように適応させることができるかわかりません。同じグループに同じものがないので、私は混乱します。私のアイデアの複雑さはO(N * N * K)であり、N<=10,000およびK<=100であることを考えると、このアイデアは十分に高速ではないと思います。私の考えを説明したいと思いますが、私でもまだはっきりしておらず、正しいかどうかさえわからないので、この部分はスキップします。
私の質問は、より高速なアルゴリズムを使用してこの問題を解決できる方法があるかどうかです。そのようなアルゴリズムがある場合は、少し説明してください。よろしくお願いします。文法上の間違いや、問題を明確に説明しなかった場合は申し訳ありません。