字典树
字典树Tire题集
讲一下这道题使用字典树的做法,首先介绍一下什么是字典树。字典树是一种处理字符串的数据结构,通常用于快速统计某些字符串出现的次数,比如:给定一个字符串数组[a,a,c,abc,ab],以下就是该字符串数组形成的字典树。
这棵树可以表示以字符串a出现了2次,ab出现了1次,abc出现了1次,c出现了1次
这道题的特别之处在于,不仅要求我们匹配前缀还要匹配后缀。比如ab虽然是abc的前缀但不是它的后缀,因此不符合题意。这里灵神提供的一种思路是将前缀和后缀综合考虑,比如字符串abcde、abcdesabcde,将它们的前后缀综合考虑变为{(a,e),(b,d),(c,c),(d,b),(e,a)},{(a,e),(b,d),(c,c),(d,b),(e,a),(s,s),…},可以发现经过这样转化后,只需判断前者是否是后者的前缀即可判定,某个字符串是否既是另一个字符串的前缀,又是另一个字符串的后缀,而这样就可以直接使用字典树解决。为了进一步简化,我们可以将这个键值对映射为一个数字。
实现代码:
1 | class Solution { |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 dch'blog!