2 つの文字列スライスの違いを見つける
プログラミングで文字列スライスを扱うとき、多くの場合、2 つのセット間の違いを判断する必要があります。次のシナリオを考えてみましょう:
slice1 := []string{"foo", "bar","hello"} slice2 := []string{"foo", "bar"}
私たちの目標は、スライス 1 には存在するがスライス 2 には存在しない要素を識別して出力することです。
効率的な検索のためのハッシュマップの利用
差を効率的に計算するには、Go マップを活用できます。 Go のマップは定数時間 (O(1)) ルックアップを提供し、セット内に要素が存在するかどうかを迅速に判断できます。
差分関数の実装
マップを使用した差分関数の実装は次のとおりです:
// difference returns the elements in `a` that aren't in `b`. func difference(a, b []string) []string { mb := make(map[string]struct{}, len(b)) for _, x := range b { mb[x] = struct{}{} } var diff []string for _, x := range a { if _, found := mb[x]; !found { diff = append(diff, x) } } return diff }
分解関数
この実装の時間計算量はおよそ O(n) です。ここで、n はスライス 1 とスライス 2 の最大長です。その効率はマップによって実行される定数操作に由来しており、これにより検索と挿入が高速になります。
以上がある文字列スライスの中で、別の文字列スライスにはない要素を効率的に見つけるにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。