L'API entry di Rust fornisce una vista su una singola voce di una mappa, che può essere una HashMap o una BTreeMap.
La voce può essere occupata o libera, e l'API fornisce dei metodi per modificare il contenuto della voce.
In questo esercizio userai una HashMap, insieme ai metodi dell'entry API, per risolvere un semplice problema algoritmico.
Dati &[&str] che rappresentano le parole di un articolo di rivista e &[&str] che rappresentano le parole di una nota che vorresti inviare, riesci a comporre la nota ritagliando le parole dalla rivista e incollandole su un foglio?
Note:
Partirai dalla seguente firma di funzione già predisposta:
pub fn can_construct_note(magazine: &[&str], note: &[&str]) -> bool {
todo!()
}
Dato il seguente input
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));
La funzione restituisce false perché la rivista contiene una sola occorrenza di "two", mentre la nota ne richiede due.
Il seguente input funzionerà:
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));
La funzione restituisce true perché la rivista contiene tutte le parole richieste dalla nota.
Iscriviti a Exercism per imparare e padroneggiare Rust con 99 esercizi e il mentoring di persone reali, tutto gratis.