Το entry API της Rust παρέχει μια προβολή σε μία μεμονωμένη καταχώριση σε έναν χάρτη, ο οποίος μπορεί να είναι είτε HashMap είτε BTreeMap.
Η καταχώριση μπορεί να είναι είτε κατειλημμένη είτε κενή, και το API παρέχει μεθόδους για την τροποποίηση των περιεχομένων της καταχώρισης.
Σε αυτή την άσκηση θα χρησιμοποιήσεις ένα HashMap, μαζί με μεθόδους του entry API, για να λύσεις ένα απλό πρόβλημα αλγορίθμου.
Δεδομένου ενός &[&str] που αντιπροσωπεύει τις λέξεις ενός άρθρου περιοδικού, και ενός &[&str] που αντιπροσωπεύει τις λέξεις ενός σημειώματος που θέλεις να στείλεις, μπορείς να συνθέσεις το σημείωμά σου κόβοντας λέξεις από το περιοδικό και κολλώντας τις σε ένα γράμμα;
Σημειώσεις:
Θα ξεκινήσεις με την παρακάτω υπογραφή συνάρτησης, η οποία είναι μόνο σκελετός:
pub fn can_construct_note(magazine: &[&str], note: &[&str]) -> bool {
todo!()
}
Δεδομένης της παρακάτω εισόδου
let magazine = "two times three is not four".split_whitespace().collect::<Vec<&str>>();
let note = "two times two is four".split_whitespace().collect::<Vec<&str>>();
assert!(!can_construct_note(&magazine, ¬e));
Η συνάρτηση επιστρέφει false, αφού το περιοδικό περιέχει μόνο ένα στιγμιότυπο του "two" ενώ το σημείωμα χρειάζεται δύο από αυτά.
Η παρακάτω είσοδος θα πετύχει:
let magazine = "Astronomer Amy Mainzer spent hours chatting with Leonardo DiCaprio for Netflix's 'Don't Look Up'".split_whitespace().collect::<Vec<&str>>();
let note = "Amy Mainzer chatting with Leonardo DiCaprio"
.split_whitespace()
.collect::<Vec<&str>>();
assert!(can_construct_note(&magazine, ¬e));
Η συνάρτηση επιστρέφει true, αφού το περιοδικό περιέχει όλες τις λέξεις που χρειάζεται το σημείωμα.
Γράψου στο Exercism για να μάθεις και να κατακτήσεις Rust με 99 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.