Решение на Search от Иван Велков

Обратно към всички решения

Към профила на Иван Велков

Резултати

  • 15 точки от тестове
  • 0 бонус точки
  • 15 точки общо
  • 5 успешни тест(а)
  • 0 неуспешни тест(а)

Код

pub fn extract_words(text: &str) -> Vec<String> {
let res = text.split(|c| !char::is_alphabetic(c)).collect::<Vec<&str>>();
res.iter().filter(|&c| !c.is_empty() ).map(|&c| String::from(c)).collect::<Vec<String>>()
}
use std::collections::HashSet;
pub struct TextIndex {
words: HashSet<String>
}
impl TextIndex {
pub fn new() -> Self {
Self{
words: HashSet::new()
}
}
pub fn push(&mut self, text: &str) {
self.words.insert(String::from(text));
}
pub fn search(&self, query: &str) -> HashSet<&str> {
let mut res: HashSet<&str> = HashSet::new();
let targets = extract_words(query);
// хубаво щеше да е да махнна дуплиращи се елементи ако има такива
for word in targets.iter() {
// и тук да правя self.words.filter(contains(word))
// + някоя друга проверка дали вече не съм набутал всичко
for i in self.words.iter() {
if i.contains(word) {
res.insert(i);
}
}
}
res
}
}

Лог от изпълнението

Compiling solution v0.1.0 (file:///tmp/d20180105-6053-3i75xp/solution)
    Finished dev [unoptimized + debuginfo] target(s) in 4.86 secs
     Running target/debug/deps/solution-3f98bfa5c86a5dd9

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out

     Running target/debug/deps/solution_test-3d9e4ea2eafbbc82

running 5 tests
test solution_test::test_extract_words_basic ... ok
test solution_test::test_extract_words_extra ... ok
test solution_test::test_search_multiple_words ... ok
test solution_test::test_search_special_cases ... ok
test solution_test::test_search_word ... ok

test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out

   Doc-tests solution

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out

История (1 версия и 1 коментар)

Иван качи първо решение на 05.01.2018 09:19 (преди над 7 години)