A API entry do Rust oferece uma vista para uma única entrada num mapa, que pode ser um HashMap ou um BTreeMap.
A entrada pode estar ocupada ou vazia, e a API fornece métodos para modificar o conteúdo da entrada.
Neste exercício vais usar um HashMap, juntamente com métodos da API entry, para resolver um problema simples de algoritmo.
Dado &[&str] que representa as palavras de um artigo de revista, e &[&str] que representa as palavras de uma nota que gostarias de enviar, consegues compor a tua nota recortando palavras da revista e colando-as numa carta?
Notas:
Vais começar com a seguinte assinatura de função, com o corpo por implementar:
pub fn can_construct_note(magazine: &[&str], note: &[&str]) -> bool {
todo!()
}
Com os seguintes valores de entrada
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));
A função devolve false, porque a revista só contém uma ocorrência de "two" e a nota precisa de duas.
Com os seguintes valores de entrada, a função devolve true:
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));
A função devolve true, porque a revista contém todas as palavras de que a nota precisa.
Inscreve-te no Exercism para aprenderes e dominares Rust com 99 exercícios, e mentoria humana real, tudo grátis.