给你一个字符串 s,找出它的所有子串并按字典序排列,返回排在最后的那个子串
时间: 2023-06-11 20:07:37 浏览: 118
可以使用字典树来解决这个问题,具体步骤如下:
1. 将字符串 s 插入到字典树中。
2. 遍历字典树,找到所有的子串,并将它们按字典序排列。
3. 返回排在最后的子串。
以下是 Python 代码实现:
```python
class TrieNode:
def __init__(self):
self.children = {}
self.is_word = False
class Trie:
def __init__(self):
self.root = TrieNode()
def insert(self, word: str) -> None:
node = self.root
for c in word:
if c not in node.children:
node.children[c] = TrieNode()
node = node.children[c]
node.is_word = True
def find_last_substring(self) -> str:
node = self.root
last_substring = ''
while node:
child_keys = sorted(node.children.keys())
if not child_keys:
break
last_char = child_keys[-1]
node = node.children[last_char]
if node.is_word:
last_substring = last_char
return last_substring
class Solution:
def lastSubstring(self, s: str) -> str:
trie = Trie()
for i in range(len(s)):
trie.insert(s[i:])
return trie.find_last_substring()
```
时间复杂度为 O(nlogn),其中 n 是字符串 s 的长度。
阅读全文