Berechnen Sie den Unterschied zwischen zwei Sätzen in Rust

Nilesh Katuwal 21 Juni 2023
  1. Hash-Set in Rust
  2. Berechnen Sie den Unterschied zwischen zwei Sätzen in Rust
Berechnen Sie den Unterschied zwischen zwei Sätzen in Rust

In diesem Artikel wird die integrierte Funktion zum Berechnen der Differenz zwischen zwei Sätzen erläutert.

Hash-Set in Rust

Ein Hash-Set wird als HashMap implementiert, wobei der Wert () ist. Wie beim Typ müssen Elemente eines HashSet die Traits Eq und Hash implementieren.

Typischerweise kann dies mit #[derive(PartialEq, Eq, hash)] erreicht werden. Wenn Sie diese jedoch selbst implementieren, müssen die folgenden Eigenschaften erfüllt sein.

Syntax:

let mut HashSet_name= HashSet::new();

Wir müssen wissen, ob zwei Schlüssel gleich sind; Ihre Hashes sollten ebenfalls gleich sein.

Beispiel:

fn main() {
use std::collections::HashSet;
let mut foods = HashSet::new();
foods.insert("I love to eat".to_string());
foods.insert("Ramen with cheese".to_string());
foods.insert("Ramen with eggs".to_string());
foods.insert("Ramen with seaweed".to_string());

if !foods.contains("Sesame") {
    println!("We have {} foods, but sesame is not the one I wanted.",
             foods.len());
}
foods.remove("Ramen with eggs.");

for food in &foods {
    println!("{food}");
}
}

Ausgang:

We have 4 foods, but sesame is not the one I wanted.
Ramen with cheese
Ramen with seaweed
Ramen with eggs
I love to eat

Wenn Sie einen Wert in das HashSet einfügen (d.h. der neue Wert ist identisch mit dem bestehenden Wert und beide haben denselben Hash), ersetzt der neue Wert den alten.

Mengen haben vier grundlegende Operationen (jeder der nachfolgenden Aufrufe gibt einen Iterator zurück):

  1. union – erhalte alle unterschiedlichen Elemente aus beiden Mengen.
  2. Differenz – alle Elemente aus der ersten Menge abrufen, die nicht aus der zweiten stammen.
  3. Schnittpunkt – Abrufen aller eindeutigen Elemente für beide Sätze.
  4. Symmetrische Differenz – Abrufen aller Elemente in beiden Mengen, aber nicht in beiden.

Unten ist ein Beispiel, um den Unterschied zwischen Sätzen zu finden. Wir müssen wissen, dass der Unterschied nicht symmetrisch ist.

fn main() {
use std::collections::HashSet;
let x = HashSet::from([1, 2, 3]);
let y = HashSet::from([4, 2, 3, 4]);

for z in x.difference(&y) {
    println!("{z}");
}

let diff: HashSet<_> = x.difference(&y).collect();
assert_eq!(diff, [1].iter().collect());

let diff: HashSet<_> = y.difference(&x).collect();
assert_eq!(diff, [4].iter().collect());
}

Ausgang:

1

Berechnen Sie den Unterschied zwischen zwei Sätzen in Rust

Dieses Programm erstellt zwei HashSets, um die Integer-Elemente zu speichern, den Unterschied zwischen den beiden Sets zu finden und das Ergebnis anzuzeigen. Diese beiden HashSets können Integer-Elemente im folgenden Quellcode speichern.

Die Differenz zwischen den beiden Sätzen wurde dann mit der difference()-Technik ermittelt. Dann haben wir das Ergebnis ausgedruckt.

use std::collections::HashSet;

fn main() {
    let first_set: HashSet<_> = [10, 20, 30, 40].iter().cloned().collect();
    let second_set: HashSet<_> = [10, 20, 30].iter().cloned().collect();

    println!("The difference betwen first_set and second_set is:");
    for d in first_set.difference(&second_set) {
        print!("{} ", d);
    }
}

Ausgang:

The difference betwen first_set and second_set is:
40