- 浏览: 189544 次
- 性别:
- 来自: 济南
-
文章分类
最新评论
Implement a trie with insert, search, and startsWith methods.
Note:
You may assume that all inputs are consist of lowercase letters a-z.
题目的要求很简单,完成一个前缀树的插入,搜索等功能。
Trie为前缀树,又称字典树或单词查找树,是一种用于快速检索的多叉树结构,例如,基于英文字母的前缀树是一个26叉树(a-z),基于数字的前缀树是一个10叉树(0-9)。前缀树的核心思想是用空间换时间。利用字符串的公共前缀来降低查询时间的开销,从而可以提高效率。前缀树的缺点是如果系统中存在大量字符串,并且这些字符串基本没有公共前缀,此时需要占用大量的内存。有关前缀树的基本性质大家可以网上查询,这里不再赘述。
对于这道题目有一个search方法用来查询字典中是否存在这个单词,startsWith方法用来检查是否存在一个前缀。因此实现search方法时我们要借助一个变量isLast来判段,字典中这个是否为一个完整的单词。代码如下:
Note:
You may assume that all inputs are consist of lowercase letters a-z.
题目的要求很简单,完成一个前缀树的插入,搜索等功能。
Trie为前缀树,又称字典树或单词查找树,是一种用于快速检索的多叉树结构,例如,基于英文字母的前缀树是一个26叉树(a-z),基于数字的前缀树是一个10叉树(0-9)。前缀树的核心思想是用空间换时间。利用字符串的公共前缀来降低查询时间的开销,从而可以提高效率。前缀树的缺点是如果系统中存在大量字符串,并且这些字符串基本没有公共前缀,此时需要占用大量的内存。有关前缀树的基本性质大家可以网上查询,这里不再赘述。
对于这道题目有一个search方法用来查询字典中是否存在这个单词,startsWith方法用来检查是否存在一个前缀。因此实现search方法时我们要借助一个变量isLast来判段,字典中这个是否为一个完整的单词。代码如下:
class TrieNode { TrieNode[] trieNode; boolean isLast; // Initialize your data structure here. public TrieNode() { trieNode = new TrieNode[26]; isLast = false; } } public class Trie { private TrieNode root; public Trie() { root = new TrieNode(); } // Inserts a word into the trie. public void insert(String word) { TrieNode cur = root; for(char c : word.toCharArray()) { if(cur.trieNode[c - 'a'] == null) cur.trieNode[c - 'a'] = new TrieNode(); cur = cur.trieNode[c - 'a']; } cur.isLast = true; } // Returns if the word is in the trie. public boolean search(String word) { TrieNode cur = root; if(root == null) return false; for(char c : word.toCharArray()) { if(cur.trieNode[c - 'a'] == null) return false; cur = cur.trieNode[c - 'a']; } if(cur.isLast == true) return true; return false; } // Returns if there is any word in the trie // that starts with the given prefix. public boolean startsWith(String prefix) { TrieNode cur = root; if(root == null) return false; for(char c : prefix.toCharArray()) { if(cur.trieNode[c - 'a'] == null) return false; cur = cur.trieNode[c - 'a']; } return true; } } // Your Trie object will be instantiated and called as such: // Trie trie = new Trie(); // trie.insert("somestring"); // trie.search("key");
发表评论
-
498. Diagonal Traverse
2019-11-15 13:52 295Given a matrix of M x N eleme ... -
496 Next Greater Element I
2019-11-14 13:50 300You are given two arrays (witho ... -
Word Break II
2016-03-09 03:15 419Given a string s and a dictiona ... -
Insert Interval
2016-03-08 02:11 400Given a set of non-overlapping ... -
Merge Intervals
2016-03-07 05:25 531Given a collection of intervals ... -
Merge k Sorted Lists
2016-03-07 04:03 611Merge k sorted linked lists and ... -
Multiply Strings
2016-03-06 07:27 506Given two numbers represented a ... -
N-Queens II
2016-03-06 03:06 705Follow up for N-Queens problem. ... -
N-Queens
2016-03-06 02:47 506The n-queens puzzle is the prob ... -
First Missing Positive
2016-03-05 03:09 460Given an unsorted integer array ... -
Spiral Matrix
2016-03-04 03:39 618Given a matrix of m x n element ... -
Trapping Rain Water
2016-03-04 02:54 635Given n non-negative integers r ... -
Repeated DNA Sequences
2016-03-03 03:10 458All DNA is composed of a series ... -
Increasing Triplet Subsequence
2016-03-02 02:48 930Given an unsorted array return ... -
Maximum Product of Word Lengths
2016-03-02 01:56 957Given a string array words, fin ... -
LRU Cache
2016-02-29 10:37 630Design and implement a data str ... -
Super Ugly Number
2016-02-29 07:07 723Write a program to find the nth ... -
Longest Increasing Path in a Matrix
2016-02-29 05:56 908Given an integer matrix, find t ... -
Coin Change
2016-02-29 04:39 814You are given coins of differen ... -
Minimum Height Trees
2016-02-29 04:11 754For a undirected graph with tre ...
相关推荐
javaee电子商城系统课程设计样本.doc
scratch少儿编程逻辑思维游戏源码-糖果大爆险.zip
# 压缩文件中包含: 中文-英文对照文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文-英文对照文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;
# 压缩文件中包含: 中文-英文对照文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文-英文对照文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;
GIS安装施工综合方案.doc
内容概要:本文详细介绍了选题系统源码,涵盖PHP、CSS、JavaScript和MySQL四种核心技术。系统采用B/S架构,支持管理员、审核员、教师和学生四种身份登录,每种身份有独立的功能权限。文中提供了详细的环境搭建指南,如使用phpStudy和Navicat进行项目管理和数据库操作。此外,还展示了关键代码片段,如登录验证、权限管理、数据库设计以及界面优化方法。同时,针对性能优化提出了建议,如解决N+1查询问题的方法。 适合人群:适用于有一定编程基础,尤其是对PHP和Web开发感兴趣的开发者和技术爱好者。 使用场景及目标:① 学习并掌握B/S架构的应用开发流程;② 实践多角色登录和权限管理的具体实现;③ 提升Web应用的界面优化和用户体验;④ 掌握数据库设计和性能优化技巧。 其他说明:本文不仅提供了完整的代码示例,还包括了详细的开发文档和支持材料,帮助读者快速上手并深入理解整个项目的构建过程。
scratch少儿编程逻辑思维游戏源码-下水道冒险猫.zip
scratch少儿编程逻辑思维游戏源码-下雨时向北的路.zip
内容概要:本文深入探讨了三相下垂双逆变器同步并联控制技术,重点介绍了下垂控制的基本原理及其在微电网中的应用。文章详细解释了下垂控制如何通过调整频率和电压幅值来实现负载的自动分配,并讨论了在多台逆变器并联时可能出现的环流问题以及解决方案,如虚拟阻抗法。此外,还介绍了同步环节的关键技术,特别是改进型锁相环的应用,并提供了具体的实现代码示例。最后,文章分享了一些实用的调试技巧和经验,强调了参数整定的重要性。 适用人群:从事电力电子、微电网控制领域的研究人员和技术人员。 使用场景及目标:适用于希望深入了解三相下垂双逆变器同步并联控制技术的工程师和科研人员,旨在帮助他们掌握核心技术,解决实际工程中的问题。 其他说明:文中提供的代码示例和调试方法有助于读者更好地理解和应用相关技术,提高系统的稳定性和性能。
# 压缩文件中包含: 中文-英文对照文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文-英文对照文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;
GEPLC机组自动化装置编程使用说明书.doc
scratch少儿编程逻辑思维游戏源码-我的领土.zip
# 压缩文件中包含: 中文文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;
scratch少儿编程逻辑思维游戏源码-我的世界 MMO V1.6.zip
scratch少儿编程逻辑思维游戏源码-坦克(1).zip
GSM移动通信网容量解决方案.doc
scratch少儿编程逻辑思维游戏源码-天台狂飙.zip
scratch少儿编程逻辑思维游戏源码-逃避猫 避险闯关游戏.zip
# 压缩文件中包含: 中文文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;
# 压缩文件中包含: 中文文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;