La API de entradas de Rust ofrece una vista de una única entrada de un mapa, que puede ser un HashMap o un BTreeMap.
La entrada puede estar ocupada o vacante, y la API proporciona métodos para modificar el contenido de la entrada.
En este ejercicio vas a usar un HashMap, junto con los métodos de la API de entradas, para resolver un problema sencillo de algoritmos.
Dados &[&str] que representan las palabras de un artículo de revista y &[&str] que representan las palabras de una nota que te gustaría enviar, ¿puedes componer tu nota recortando palabras de la revista y pegándolas en una carta?
Notas:
Empezarás con la siguiente firma de función sin implementar:
pub fn can_construct_note(magazine: &[&str], note: &[&str]) -> bool {
todo!()
}
Dada la siguiente 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));
La función devuelve false, ya que la revista solo contiene una instancia de "two" cuando la nota requiere dos.
La siguiente entrada sí funcionará:
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 función devuelve true, ya que la revista contiene todas las palabras que requiere la nota.
Regístrate en Exercism para aprender y dominar Rust con 99 ejercicios y mentoría humana real, todo gratis.