def test_search(self): trie = Trie(['test', 'testing', 'testing methodology'], [1, 3, 2]) self.assertEqual(trie.search('tes', 3), ['testing', 'testing methodology', 'test']) self.assertEqual(trie.search('tes', 2), ['testing', 'testing methodology']) self.assertEqual(trie.search('testi', 3), ['testing', 'testing methodology'])
class Autocompleter: def __init__(self, capacity: int, phrases: List[str], frequencies: List[int]): assert capacity >= len( phrases), "Cannot insert more phrases than capacity" self.trie = Trie(phrases, frequencies) self.cache = LRUCache(capacity, phrases) def search(self, phrase: str, results_size: int) -> List[str]: return self.trie.search(phrase, results_size) def commit(self, phrase: str, freq: int = 1): assert phrase != "", "Should not insert an empty string" self.trie.insert(phrase, freq) removed = self.cache.put(phrase) if removed: self.trie.delete(removed) return removed
def test_trie_get_words(words): trie = Trie(words) assert trie.get_words('me') == set(['mean', 'meat'])
def test_trie_supports_membership(words): trie = Trie(words) assert 'table' in trie assert 'al' in trie assert 'sup' not in trie
def test_trie(words): trie = Trie(words) print(trie)
def __init__(self, words=None): self.trie = Trie(words or WORDS)
class Autocomplete: def __init__(self, words=None): self.trie = Trie(words or WORDS) def get(self, prefix): return self.trie.get_words(prefix)
def __init__(self, capacity: int, phrases: List[str], frequencies: List[int]): assert capacity >= len( phrases), "Cannot insert more phrases than capacity" self.trie = Trie(phrases, frequencies) self.cache = LRUCache(capacity, phrases)
def test_constructor(self): self.assertRaises(AssertionError, Trie, ['test'], [1, 2]) trie = Trie(['test'], [1]) self.assertTrue(trie.exists('test'))
def test_deletion(self): trie = Trie(['test', 'testing', 'testing methodology'], [1, 3, 2]) trie.delete('testing') self.assertFalse(trie.exists('testing')) self.assertTrue(trie.exists('test')) self.assertTrue(trie.exists('testing methodology'))
def test_no_existance(self): trie = Trie(['test'], [1]) self.assertFalse(trie.exists('testing'))
def test_insertion_and_existance(self): trie = Trie(['test'], [1]) trie.insert('testing') self.assertTrue(trie.exists('testing'))