城市直播房产教育博客汽车
快传网
汽车报价
买车新车
博客专栏
专题精品
教育留学
高考读书
房产家居
彩票视频
直播黑猫
投资微博
城市上海
政务旅游

数据结构Trie(前缀树)

3月7日 浅时光投稿
  问题
  求出给定字符串数组的最大公共前缀〔hello,helloworld,help〕用途
  自动完成
  拼写检查
  ip路由
  T9文本预测
  猜字游戏
  还有其他几种数据结构,例如平衡树和哈希表,它们使我们可以在字符串数据集中搜索单词。那为什么我们需要trie呢?
  尽管哈希表在查找key时具有O(1)时间复杂度,但在以下操作中效率不高:查找具有公共前缀的所有键。按字典顺序枚举字符串数据集。
  Trie优于哈希表的另一个原因是,随着哈希表大小的增加,会出现大量哈希冲突,并且搜索时间复杂度可能会恶化到O(n),其中n是插入的键数。在存储许多具有相同前缀的键时,与HashTable相比,Trie可以使用更少的空间。在这种情况下,使用trie的时间复杂度仅为O(m),其中m是key长度。
  在平衡树中搜索一个键需要O(mlogn)时间复杂度。Trie节点结构
  Trie是一棵有根的树。其节点具有以下字段:与其子级的最大R链接,其中每个链接对应于数据集字母表中的一个R字符值。在本文中,我们假设R为26,即小写拉丁字母的数量。布尔字段,它指定节点是否对应于键的末尾,或者只是一个键前缀。当前节点下级节点个数(非必须,我们为了解决最长公共串才加上)publicclassTrieNode{RlinkstonodechildrenprivateTrieNode〔〕privatefinalintR26;privatebooleanisEintsize0;publicTrieNode(){linksnewTrieNode〔R〕;}publicbooleancontainsKey(charch){returnlinks〔cha〕!}publicTrieNodeget(charch){returnlinks〔cha〕;}publicvoidput(charch,TrieNodenode){links〔cha〕}publicvoidsetEnd(){isE}publicbooleanisEnd(){returnisE}publicintgetLinks(){}}
  插入查询类publicclassTrie{privateTrieNpublicTrie(){rootnewTrieNode();}Insertsawordintothetrie。publicvoidinsert(Stringword){TrieNfor(inti0;iword。length();i){charcurrentCharword。charAt(i);if(!node。containsKey(currentChar)){node。put(currentChar,newTrieNode());}nodenode。get(currentChar);}注意这里,设置end的节点是不包含最后一个字符的node。setEnd();}privateTrieNodesearchPrefix(Stringword){TrieNfor(inti0;iword。length();i){charcurLetterword。charAt(i);if(node。containsKey(curLetter)){nodenode。get(curLetter);}else{}}}Returnsifthewordisinthetrie。publicbooleansearch(Stringword){TrieNodenodesearchPrefix(word);returnnode!nullnode。isEnd();}publicbooleanstartsWith(Stringprefix){TrieNodenodesearchPrefix(prefix);returnnode!}publicStringsearchLongestPrefix(Strings){TrieNStringBuildersbnewStringBuilder();for(charc:s。toCharArray()){if(node。containsKey(c)node。getLinks()1!node。isEnd()){sb。append(c);nodenode。get(c);}else{returnsb。toString();}}returnsb。toString();}publicstaticvoidmain(String〔〕args){String〔〕linknewString〔〕{hello,helloworld,help};TrietrienewTrie();for(Strings:link){trie。insert(s);}System。out。println(trie。searchLongestPrefix(link〔link。length1〕));}}
投诉 评论 转载

传言终成真,巴菲特卖了比亚迪大赚,依然长期看好新能源?对于比亚迪来说,今年是特别的一年,因为刚刚公布的半年报显示,比亚迪已经摘去了增收不增利的帽子,净利润和营收都创了历史的新高,就在比亚迪享受着新能源汽车红利之时,盘后一则消息应该……何所谓爱情?随着社会的飞速发展,到如今的二十一世纪,人们的价值观,世界观,爱情观都已经发生了很大的变化。老一辈在木心笔下的爱情是从前书信很慢,车马很远,一生只爱一个人。现在当代的年轻……顺丰寄丢万元手机仅赔1000元,该公司丑闻被曝光,女子手机被9月6日,一则顺丰寄丢万元手机仅赔偿1000元的消息登上热搜。当事人夏女士对顺丰公司的解决方案表示:不能接受。回顾案件广东深圳的夏女士告诉记者,今年3月29日,她在……3999的骁龙778G起,一分钟速览四款Mate50系列还是头条创作挑战赛文凯尔资讯今日下午,华为Mate50系列正式发布了四款机型:华为Mate50E、华为Mate50标准版、华为Mate50Pro和Mate50RS。起步……科学家用斐波那契激光爆炸原子以制造额外时间维度新阶段是通过在量子计算机内向10个镱离子发射激光制成的通过向量子计算机内部的原子发射斐波那契激光脉冲,物理学家创造了一种全新的、奇怪的物质相,其行为方式就好像它具有两个时……LPL夏季赛总决赛JDGvsTES今日开战!谁能再次踏破狂澜踏破狂澜,巅峰之战,双雄会顶再征银龙!2022LPL夏季赛总决赛JDGvsTES即将在今日下午火热开战!赛前,LPL官方发布了两队数据前瞻,两队作为夏季赛常规赛前二的队伍,本赛……扎金索斯岛度假散记(一)一家人一起度假,是我的诗和远方七月的盛夏,是夏天假期的时候。一家人相约,一起来到了橄榄香弥漫的希腊,扎金索斯岛(Zakynthos)。瑞典稀有烈日,荷兰罕见炎热,高温环境就成了久居的人们向往的地方。……欧皇前期的几个关键点,如何快过前期?现在,我们就来聊聊《欧皇》前期的几个关键点,如何快速度过前期。下面进入攻略正文:开局随机捏脸在这里,玩家可以根据自己喜好选择喜欢的人物形象,确定下来就是你在异……西铁城为纪念Series8系列腕表,推出一款全黑限量版当西铁城在2021年初宣布重新推出Series8系列时,这款Series8腕表的外观、动力和出色的制造质量迅速引起了市场的关注。而且西铁城为Series8系列重新推出一周年之后……看杜兰特采访学做人场景:第一场季后赛篮网114比115绿军,杜兰特全场24投9中拿下23分,还有6次失误被3次封盖,惨遭绝杀后,杜兰特接受参访记者:凯文,谈谈今天的比赛杜:有些可惜,……数据结构Trie(前缀树)问题求出给定字符串数组的最大公共前缀〔hello,helloworld,help〕用途自动完成拼写检查ip路由T9文本预测猜字游戏还有……30的女人,美丽从来不被定义,高级从容的通勤穿搭,太显高女人最美好的年华,不是懵懵懂懂的18岁,而是最知性优雅的30岁。30岁的年纪,你更能明白自己想要什么,随心的生活,才能收获满满的幸福。30的女人,美丽从来不被定义。这个年……
边防要塞之地沦为网红打卡点?俄罗斯花样监狱,外观犹如童话世界苏世民最新回应我终于敢承认自己阳过了痊愈者的这句话,让多少人破防?广州烟火气回来了!这4家菜市场15家店,通通都要逛一遍35岁以后,低配生活和高配生活,区别很大江西萍乡市值得推荐的十二道美食,你吃过几道呢?恒驰量产!强大产品力令人侧目燕云十六声用全新方式诠释武侠开放世界,破阵之作未来可期今天,您吃大豆了吗?官宣!独行侠完成压哨签约,球哥或赛季报销,勇士不该续约鲁尼?九州通衢之地宿州迪丽热巴再启大女主剧,二搭杨洋领衔出演,设定不输凤九丰兰息
五一旅游爆火!最热目的地是丘北究竟有何美食,让人在那住了半个多月都舍不得走?长发鱼尾辫发型波西米亚编发大全经发办2022年第一季度工作计划范本财务透视经典读后感有感部编版初中语文古诗词赏析整理艾滋病治愈最新消息2019:基因编辑清除HIV成功斯文是装不出来的的阅读及答案夏天宝宝需不需要补钙2021年雷锋日作文300字新世纪如何学雷锋女职工孕期旷工如何处理SOGO崇光百货35周年店庆开始啦!MK包4折Furla包半

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找江西南阳嘉兴昆明铜陵滨州广东西昌常德梅州兰州阳江运城金华广西萍乡大理重庆诸暨泉州安庆南充武汉辽宁