L'API entry de Rust donne une vue sur une entrée unique d'une table associative, qui peut être soit un HashMap, soit un BTreeMap.
L'entrée peut être soit occupée, soit vacante, et cette API fournit des méthodes pour en modifier le contenu.
Dans cet exercice, tu vas utiliser un HashMap, ainsi que les méthodes de l'entry API, pour résoudre un problème d'algorithme simple.
Étant donné un &[&str] représentant les mots d'un article de magazine, et un &[&str] représentant les mots d'une note que tu souhaites envoyer, peux-tu composer ta note en découpant des mots dans le magazine et en les collant dans une lettre ?
Remarques :
Tu commenceras avec la signature de fonction suivante, laissée à l'état d'ébauche :
pub fn can_construct_note(magazine: &[&str], note: &[&str]) -> bool {
todo!()
}
Étant donné l'entrée suivante
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 fonction renvoie false, car le magazine ne contient qu'une seule occurrence de "two" alors que la note en demande deux.
L'entrée suivante fonctionnera :
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 fonction renvoie true, car le magazine contient tous les mots dont la note a besoin.
Inscris-toi sur Exercism pour apprendre et maîtriser Rust avec 99 exercices, et un vrai mentorat humain, le tout gratuitement.