首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【面试现场】如何在500w个单词中统计特定前缀的单词有多少个?

1、来了一个新的单词,需要判断是否在这500w个单词中 2、来了一个单词前缀,给出500w个单词中有多少个单词是该前缀 小史这次没有不假思索就给出回答,他学会了深沉。 ? ?...找前缀为inter的所有单词: ? 遍历以前缀节点为根结点的一棵树,就能统计出前缀为inter的所有单词有多少个。 【字典树】 ? ? ? ? ? ? ? ? ? ? ? ?...,说明已经匹配完毕,直接返回节点是否为单词 return node.isWord; } } return false...) == 0) { // 找到目标节点,返回单词数 return node.count; // 前缀匹配字串,且字串较短...小史:我想想啊,大量字符串的统计和查找应该就可以用字典树吧?字符串前缀的匹配也可以用,像咱们搜索常见的autoComplete控件是不是就可以用? ? ? ? ?

86010
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    前端学数据结构与算法(八): 单词前缀匹配神器-Trie树的实现及其应用

    Trie树的本质就是将**单词之间的公共前缀合并起来**,这也就会造成单词ban和banana公用同一条路径,所以需要在单词的结尾处给一个标识符,表示该字符为一个单词的结束。...(add) 将单词拆解为单个的字符,而每个字符就是一个Node类的实例,最后当单词达到末尾时,将最后字符Node节点的isWord属性设置为true即可。...查询Trie里的单词(search) 因为已经有一颗Trie树了,所以要查询也很简单,只需要将要查询的单词分解为字符逐层向下的和Trie树节点进行匹配即可,只要有一个节点Trie树里没有,就可以判断Trie...,然后再输入前缀之后,把每个匹配的单词的权重值累加即可。...(词根)构建为一颗Trie树,然后遍历的把每个单词与这颗前缀树进行匹配,当前缀树到达结尾时,就把原来字符串换为该词根即可。

    88411

    Linux基础之正则表达式

    正则表达式是对字符串(包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”))操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串...给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”): 2. 可以通过正则表达式,从字符串中获取我们想要的特定部分。...: 查看显示 /etc/fstab 文件以 # 注释开头的行: 这里也可以不加【】: -v 取反,即显示不以#注释的行,-o 选项为只显示匹配到的字符串: 显示 /etc/fstab 文件非注释的行...,锚定行首为 # 注释的行,取反: 显示 /etc/fstab 文件以#号开头,后面跟一个空格,后面为任意长度任意字符的行, -c 选项可以统计匹配到的行数: 在 /tmp/fstab 文件中加入多个空白行.../etc 目录下以p开头不以数字结尾的所有文件和目录: 显示 ip a 或者 ifconfig 命令中的IP地址,-E 选项为支持扩展正则表达式: -l 选项可以列出包含字符串的文件列表: -w

    1.1K20

    《Java 数据结构与算法》第7章:字典树

    二、字典树数据结构 在计算机科学中,字典树(Trie)也被称为”单词查找树“或”数字树“,有时候也被称为基数树或前缀树(因为可以通过前缀的方式进行索引)。...这是一个把 battle 单词字符串,按照字母拆分到字典树进行存放的图。 键标注在节点中,值标注在节点之下。每一个完整的英文单词对应一个特定的整数。也就是26个字母对应的 ASCII 转换后的值。...同理如果是数字树的话就是10个数字的组合,每个字典树上的节点对应的分支则有10个操作存放可能出现组合的数字。 接下来我们就基于 Java 语言实现一个字典树的存放和遍历索引的功能。...,之后是节点的字母、到此字母是否为单词、单词的前缀、单词字符串和当前单词的非必要注释。...2部分,第1部分是根据提供的索引前缀精准匹配到单词信息,第2部分是根据索引前缀的最后一个单词开始,循环递归遍历从当前位置所能关联到的字母直至判断为是单词标记为结束,通过这样的方式把所有匹配动的单词索引出来

    58160

    FINDSTR正则表达式小结

    如:"[news]"不能理解为查找含有news单词的行,只能是定位含有n e w s 4个字母之一的行。 ○ 需要说明的是,该字符集里的集元素可以是字母和数字和一般的半角字符。...● 减法规则 [^abc] 参照帮助信息,本该理解为,匹配不含abc三个字母的行。但在xp系统下,却不被正确解释。 ○ "[^echo.]" 实际表示在查找结果中去除为"echo."字符串的行。....* [a-z]* [0-9]* [abc]* a* ● 单词前缀后缀定位规则  "\" 该单词可以是英文单词和数字,该单词规则不适用于汉字。...○ "\单词以cal为前缀的单词 如="" call="" called="" calling="" calculation○ "ed\>" 查找文本中,英文单词以...ed为后缀的单词 如 called added changed ○ "\" 用来精确查找单词。

    45820

    Python字符串和正则表达式的深入学习

    可选,指定对齐方式(""右对齐,"="右对齐-对数字类型有效,"^"居中(配合with使用)) ③sign:可选,指定有无符号 ④#:可选,对二、八、十六进制,加上#号表示有前缀“\0b...# 这个不能匹配 2.2 元字符 除了前边的“^”和"$"外,还有很多元字符 如格式:\bqw\w*\b 说明: ①表示用于匹配以字母qw开头的单词 ②先从某个单词开始处(\b),然后匹配字母qw,接着是任意的字母或字符...匹配除换行符以外的任意字符 \w 匹配字母、数字、下划线或汉字 \W 匹配除字母、数字、下划线或汉字以外的字符 \s 匹配单个空白符(包括tab键和换行符) \S 匹配除单个空白符(包括tab键和换行符...)以外的所有字符 \d 匹配数字 \b 匹配单词的开始或结束,单词的分界符通常是空格、标点符号或者换行 ^ 匹配字符串的开始 $ 匹配字符串的结尾 2.3 限定符 常用限定符 限定符 说明 ?...使用" | "来表示,意思为"或" 比如: "(^\d{15}$) | (^\d{18}$) | (^\d{17})(\d|X|x)$" # 匹配身份证规则:皮皮额15为数字,或者18位数字,或者17

    1K60

    样式命名规则

    样式命名规则 由 Ghostzhang 发表于 2008-03-20 23:12 命名一直是个让我头痛的问题,特别是那些看上去差不多的模块,所以就得想办法啦,我总结了下面的方法,虽然还在试验中。...欢迎大家提出改进的意见。具体如下: 要注意的内容: 一,命名所选用的单词应选择不过于具体表示某一状态(如颜色、字号大小等)的单词,以避免当状态改变时名称失去意义。...二,样式类名由以字母开头的小写字母(a-z)、数字(0-9)、下划线()、减号(-)组成。 ID名称由不以数字开头的小写字母(a-z)、数字(0-9)、下划线()组成。...可使用类似下面的规则: [模块前缀|类型|作用][名称][状态|位置] 约定模块、类型、状态、位置等的所使用的单词或其缩写,保持上面的顺序,尽量保持在两到三个单词说清用途。...icon 弹出 pop 文本输入框 .input_tx 密码输入框 .input_pw 登录密码输入框 .input_pw_login 日志设置成功提示 .hint_suc_blogset 相册弹出的设置层

    90520

    正则表达式来了,Excel中的正则表达式匹配示例

    图2 正则表达式匹配数字 要匹配0到9之间的任何单个数字,在正则表达式中使用\d字符。根据特定任务,添加合适的量词或创建更复杂的模式。...模式:\d+ =RegExpMatch(A5:A9,”\d+”) 图3 正则表达式匹配特定长度的数字 如果目标是匹配包含特定位数的数值,将\d与适当的量词一起使用。...例如,要匹配正好由7位数字组成的发票号,可以使用\d{7}。但是,请记住,它将匹配字符串中任何位置的7位数字,包括10位或100位数字。如果这不是要查找的内容,应在两侧放置单词边界\b。...对于多行字符串,^和$字符匹配每行的开头和结尾,而不是输入字符串的开头和结尾,因此正则表达式只搜索第一行。 要匹配不以特定文本开头的字符串,使用正则表达式,如^(?!lemons).*$。...要匹配不以特定文本结尾的字符串,在搜索模式中包含结尾字符串锚定:^((?!lemons).)*。 用于不区分大小写匹配的正则表达式 在经典正则表达式中,有一种特殊的不区分大小写的匹配模式(?

    22K30

    传统编程遇上机器学习会擦出怎样的火花?

    在这篇文章中,我们将开发一个使用树状数据结构和协同过滤的自动完成组件来为用户选择最佳的图书标题提供建议。...不幸的是,HashTables只能查找整个单词匹配,而不是匹配前缀(即以......开始的标题)。 同样,我们可以考虑一个平衡良好的二叉树。...因为它给了我们θ(log(N),即所有标题的大小乘以搜索和插入的复杂度。同样,二叉树没有帮助,因为它们找不到前缀匹配而是精准匹配。 幸运的是,现有的数据结构已经准备好用于查找前缀匹配。...尝试 在本节中,我们将探讨试图如何在标题(单词)列表中搜索前缀匹配。一旦你理解了单词的插入方式,就相当容易理解: ? 接下来让我们看看如何搜索以“te”开头的标题: ? 你可能在想,没有那么快!...事实上,复杂度是θ(k + M),其中k是前缀的长度,M是建议列表或最后一个节点匹配下的子树的大小(直接子节点保存在HashTable中,因此需要经常查找字符匹配)。

    93950

    算法:字符串

    并且有两种特殊子串,起始于位置为0,长度为k的子串称为「前缀」,而终止于n-1,长度为k的子串称为「后缀」; 主串:包含子串的字符串相应的称为「主串」; 举个例子来说明一下: str = "Hello...: 字符串匹配问题 子串相关问题 前缀 / 后缀相关问题 回文串相关问题 子序列相关问题 字符串的比较 字符串的比较操作 两个数字之间很容易比较大小,例如 1 的个数,可以将字符串匹 配问题分为:「单模式串匹配问题」和「多模式串匹配问题 单模式匹配问题 单模式匹配问题:给定一个文本串T = t_1t_2 ...t_n ,再给定一组特定模式串P =...要求从文本 串T找出特定模式串p的所有出现位置。有很多算法可以解决单模式匹配问题。...-1 # 匹配失败,返回-1 KMP匹配算法分析 KMP算法在构造前缀表阶段的时间复杂度为 O(m) ,其中m是模式串p的长度 KMP算法在匹配阶段,是根据前缀表不断调整匹配的位置,文本串的下标i

    2.7K30

    命名规则

    CA1712:不要将类型名用作枚举值的前缀 枚举成员的名称不使用类型名称作为前缀,因为类型信息将由开发工具提供。...CA1713:事件不应具有 before 或 after 前缀 事件的名称以“Before”或“After”开头。 若要命名按特定顺序引发的相关事件,请使用现在时或过去时指示一系列操作中的相对位置。...用 FlagsAttribute 标记的类型具有复数形式的名称,因为该特性指明可以指定多个值。 CA1715:标识符应具有正确的前缀 外部可见的接口的名称不以大写的“I”开头。...外部可见的类型或方法上的泛型类型参数的名称不以大写的“T”开头。 CA1716:标识符不应与关键字冲突 某个命名空间名称或类型名称与编程语言中的保留关键字相同。...CA1724:类型名不应与命名空间冲突 类型名不应与 .NET 命名空间的名称匹配。 与该规则冲突将使库的可用性下降。

    1.5K00

    正则表达式零宽断言详解(?=,?

    在使用正则表达式时,有时我们需要捕获的内容前后必须是特定内容,但又不捕获这些特定内容的时候,零宽断言就起到作用了 正则表达式零宽断言: 零宽断言是正则表达式中的难点,所以重点从匹配原理方面进行分析。...exp),断言此位置的后面不能匹配表达式exp。 例如:\d{3}(?!\d)匹配三位数字,而且这三位数字的后面不能是数字;\b((?!abc)\w)+\b匹配不包含连续字符串abc的单词。...=)匹配不包含属性的简单HTML标签内里的内容。()指定了这样的前缀:被尖括号括起来的单词(比如可能是),然后是.*(任意的字符串),最后是一个后缀(?=)。...整个表达式匹配的是和之间的内容(再次提醒,不包括前缀和后缀本身)。 上面的看了有点伤脑筋啊。...= 子表达式) 零宽度正预测先行断言仅当子表达式在此位置的右侧匹配时才继续匹配。 例如,\w+(?=\d) 与后跟数字的单词匹配,而不与该数字匹配。

    6.8K51

    你真的了解如何将 Nginx 配置为Web服务器吗

    { ... } 正则表达式的优先级大于前缀字符串。如果找到匹配的前缀字符串,仍继续搜索正则表达式,但如果前缀字符串以 ^~ 开头,则不再检查正则表达式。...如果找到的最长前缀匹配字符串以 ^~ 开头,则不再搜索正则表达式是否匹配。 存储匹配的最长前缀字符串。 测试对比 URI 与正则表达式。 找到第一个匹配的正则表达式后停止。...如果没有正则表达式匹配,使用 4 存储的前缀字符串对应的 location。 = 修饰符拥有最高的优先级。...在上面的示例中,所有不以 /images / 开头的 URI 的请求都将传递给代理服务器处理。...: 重复0次或1次 + : 重复1次或更多次 *: 重复0次或更多次 \d :匹配数字 ^ : 匹配字符串的开始 $ : 匹配字符串的介绍 {n} : 重复n次 {n,} : 重复n次或更多次 [c]

    2.1K80

    你真的了解如何将 Nginx 配置为Web服务器吗

    { ... } 正则表达式的优先级大于前缀字符串。如果找到匹配的前缀字符串,仍继续搜索正则表达式,但如果前缀字符串以 ^~ 开头,则不再检查正则表达式。...如果找到的最长前缀匹配字符串以 ^~ 开头,则不再搜索正则表达式是否匹配。 存储匹配的最长前缀字符串。 测试对比 URI 与正则表达式。 找到第一个匹配的正则表达式后停止。...如果没有正则表达式匹配,使用 4 存储的前缀字符串对应的 location。 = 修饰符拥有最高的优先级。...在上面的示例中,所有不以 /images / 开头的 URI 的请求都将传递给代理服务器处理。...: 重复0次或1次 + : 重复1次或更多次 *: 重复0次或更多次 \d :匹配数字 ^ : 匹配字符串的开始 $ : 匹配字符串的结束 {n} : 重复n次 {n,} : 重复n次或更多次 [c]

    2.4K70

    Python 正则表达式一文通

    下一个场景与销售员示例的场景非常相似,考虑下图: 我们如何验证电话号码,然后根据原产国对其进行分类? 每个正确的数字都会有一个特定的模式,可以通过使用正则表达式来跟踪和跟踪。...让我们首先检查如何在字符串中找到特定单词 在字符串中查找一个单词 import re if re.search("inform","we need to inform him with the latest...当我们执行上述程序时,输出如下: (11, 18) (38, 45) 接下来我们将检查如何使用正则表达式将单词与模式匹配。 将单词与模式匹配 考虑一个输入字符串,我们必须将某些单词与该字符串匹配。...代码中的 [shmp] 表示要查找的单词的首字母,因此,任何以字母 s、h、m 或 p 开头的子字符串都将被视为匹配,其中任何一个,并且最后必须跟在“at”后面。...我们不会给出从 h 到 m 开始的所有内容的输出,而是会向我们展示除此之外的所有内容的输出。 我们可以预期的输出是不以 h 和 m 之间的字母开头但最后仍然紧随其后的单词。

    1.8K20

    数据结构-前缀树

    如果不存在,则创建一个新的子节点;如果存在,则沿着对应的子节点继续处理下一个字符。 当处理完字符串的最后一个字符后,将最后到达的节点的标记位置为表示一个完整字符串的结束。...支持前缀搜索:可以很方便地查找具有某一特定前缀的所有字符串,这在自动补全、拼写检查等应用场景中非常有用。...拼写检查:通过将字典中的单词构建成前缀树,可以快速检查一个输入的字符串是否是一个有效的单词或者找到最接近的正确拼写。...IP 路由:在网络中,IP 地址可以看作是由点分隔的数字字符串,利用前缀树可以高效地进行 IP 路由查找,根据 IP 地址的前缀匹配路由规则。...单词统计和文本分析:统计文本中不同单词的出现次数等相关操作。

    9210
    领券