>>> string = 'a' >>> is_breakable(1) True
(index: int)
| 82 | # Dynamic programming method |
| 83 | @functools.cache |
| 84 | def is_breakable(index: int) -> bool: |
| 85 | """ |
| 86 | >>> string = 'a' |
| 87 | >>> is_breakable(1) |
| 88 | True |
| 89 | """ |
| 90 | if index == len_string: |
| 91 | return True |
| 92 | |
| 93 | trie_node: Any = trie |
| 94 | for i in range(index, len_string): |
| 95 | trie_node = trie_node.get(string[i], None) |
| 96 | |
| 97 | if trie_node is None: |
| 98 | return False |
| 99 | |
| 100 | if trie_node.get(word_keeper_key, False) and is_breakable(i + 1): |
| 101 | return True |
| 102 | |
| 103 | return False |
| 104 | |
| 105 | return is_breakable(0) |
| 106 |