문자열 슬라이스 하위 집합 간의 구별 찾기
한 문자열 슬라이스 하위 집합을 다른 문자열 슬라이스 하위 집합과 구별하는 요소를 확인하려면 다음을 고려하세요. 문제:
<p>Here is my desired outcome</p> <pre class="brush:php;toolbar:false">slice1 := []string{"foo", "bar","hello"} slice2 := []string{"foo", "bar"} difference(slice1, slice2) => ["hello"]
I need to determine the disparities between these two string slice sections!
해결책
이 문제를 해결하기 위한 효율적인 접근 방식은 Go 맵이 대략 ~O(1) 복잡도에서 작동한다고 가정합니다. 결과적으로 제안된 차이 함수는 ~O(n)의 대략적인 복잡도로 정렬되지 않은 슬라이스에서 작동합니다.
// 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 }
맵을 사용하여 요소 소속을 효율적으로 결정함으로써 차이 함수는 존재하는 요소를 효과적으로 식별하고 격리합니다. 한 조각에는 있지만 다른 조각에는 존재하지 않아 문자열 조각 하위 집합 간의 정확한 비교를 제공합니다.
위 내용은 Go에서 두 문자열 조각의 차이점을 어떻게 효율적으로 찾을 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!