Треки
/
Rust
Rust
/
Вправи
/
Вирізка з журналу
Вирізка з журналу

Вирізка з журналу

Навчальна вправа

Вступ

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, &note));

функція повертає 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, &note));

Функція повертає true, бо журнал містить усі слова, яких вимагає нотатка.

Редагувати через GitHub Посилання відкривається в новому вікні або вкладці
Rust Exercism

Час розпочати Вирізка з журналу?

Зареєструйтеся на Exercism, щоб вивчати й опановувати Rust, а також 99 вправ та справжнє наставництво від людей, і все це безкоштовно.