LeetCode 720. 词典中最长的单词(Trie树)

1. 题目

给出一个字符串数组words组成的一本英语词典。从中找出最长的一个单词,该单词是由words词典中其他单词逐步添加一个字母组成。若其中有多个可行的答案,则返回答案中字典序最小的单词。

若无答案,则返回空字符串。

示例 1:
输入: 
words = ["w","wo","wor","worl", "world"]
输出: "world"
解释: 
单词"world"可由"w", "wo", "wor","worl"添加一个字母组成。示例 2:
输入: 
words = ["a", "banana", "app", "appl", "ap", "apply", "apple"]
输出: "apple"
解释: 
"apply""apple"都能由词典中的单词组成。但是"apple"得字典序小于"apply"。注意:
所有输入的字符串都只包含小写字母。
words数组长度范围为[1,1000]。
words[i]的长度范围为[1,30]

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-word-in-dictionary
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. Trie树解题

题目意思:从1个字母开始,每次增加一个字母(包含原始字母在内的每一步组成的单词都必须在字典中找的到),最终形成的最长单词是谁

  • 对所有的单词,插入Trie树
  • 对每个 root->next[i] i=[0,26),进行dfs搜索查找最长的单词

Trie树结构参考

class Trie//Trie节点
{
public:bool isWord;Trie* next[26] = {NULL};Trie():isWord(false){}	
};class Solution {string ans;
public:string longestWord(vector<string>& words) {Trie *root = new Trie();Trie *cur;for(string str : words)//遍历所有单词{cur = root;for(char ch : str)//遍历所有字符{if(cur->next[ch-'a'] == NULL)cur->next[ch-'a'] = new Trie();cur = cur->next[ch-'a'];}cur->isWord = true;//单词结束标志}string temp;cur = root;int i, j;for(i = 0; i < 26; ++i){temp = "";if(cur->next[i] && cur->next[i]->isWord)//对每个点dfs	dfs(cur->next[i], temp, i);}return ans;}void dfs(Trie* root, string &temp, int i){if(!root)return;if(root->isWord)//是结束标志,在字典中{temp.push_back(i+'a');//加入该字符if(temp.size() > ans.size())ans = temp;//更新更长的单词for(int j = 0; j < 26; ++j)dfs(root->next[j],temp,j);//dfs下一个字符temp.pop_back();//回溯}}
};

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/478085.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

postman调的通,python调用程序却要显示登录

postman调的通&#xff0c;python调用程序却要显示登录 1 解决方案&#xff1a; 添加verify False 2 手动在网页上复制粘贴token和auth相关验证在这里插入代码片 import requests url "" requests.packages.urllib3.disable_warnings()s requests.Session()s.tr…

论文浅尝 | 通过知识到文本的转换进行知识增强的常识问答

笔记整理&#xff1a;陈卓&#xff0c;浙江大学在读博士&#xff0c;主要研究方向为低资源学习和知识图谱论文链接&#xff1a;https://www.aaai.org/AAAI21Papers/AAAI-10252.BianN.pdf发表会议&#xff1a;AAAI 2021动机文章提出了对于未来CQA(Commonsense QA)问题的三个见解…

聊聊机器翻译界的“灌水与反灌水之战”!

文 | Willie_桶桶编 | 智商掉了一地针对机器翻译领域如何提高和判断实验可信度&#xff0c;这篇ACL2021的oustanding paper迈出了关键的一步&#xff01;&#xff08;来读&#xff01;全文在末尾&#xff09;作为不停读论文和调参炼丹的科研党&#xff0c;也许在我们的身边总会…

LeetCode 273. 整数转换英文表示

1. 题目 将非负整数转换为其对应的英文表示。可以保证给定输入小于 231 - 1 。 示例 1: 输入: 123 输出: "One Hundred Twenty Three"示例 2: 输入: 12345 输出: "Twelve Thousand Three Hundred Forty Five"示例 3: 输入: 1234567 输出: "One Mill…

数据标注平台doccano----简介、安装、使用、踩坑记录

1.doccano的安装与初始配置 1.1 doccano的用途 document classification 文本分类sequence labeling 序列标注&#xff0c;用于命名实体识别sequence to sequence seq2seq&#xff0c;用于翻译speech to text 语音转文本标注 命名实体标注 序列标注&#xff08;如机器翻译&…

月圆花美 中秋快乐!

OpenKGOpenKG&#xff08;中文开放知识图谱&#xff09;旨在推动以中文为核心的知识图谱数据的开放、互联及众包&#xff0c;并促进知识图谱算法、工具及平台的开源开放。点击阅读原文&#xff0c;进入 OpenKG 网站。

大众点评支付渠道网关系统的实践之路

业务的快速增长&#xff0c;要求系统在快速迭代的同时&#xff0c;保持很好的扩展性和可用性。其中&#xff0c;交易系统除了满足上述要求之外&#xff0c;还必须保持数据的强一致性。对系统开发人员而言&#xff0c;这既是机遇&#xff0c;也是挑战。本文主要梳理大众点评支付…

拍不完的脑袋:推荐系统打压保送重排策略

文 | 水哥源 | 知乎saying1.懂模型不只是要知道模型能干什么&#xff0c;更要知道它不能干什么2.在从业一段时间后应该有一次“转职”&#xff0c;如果你相信模型无所不能&#xff0c;你应该走科研路线&#xff1b;如果你对模型不是很放心&#xff0c;那你应该成为一名工程师3.…

LeetCode 572. 另一个树的子树(二叉树迭代器)

1. 题目 给定两个非空二叉树 s 和 t&#xff0c;检验 s 中是否包含和 t 具有相同结构和节点值的子树。s 的一个子树包括 s 的一个节点和这个节点的所有子孙。s 也可以看做它自身的一棵子树。 示例 1: 给定的树 s:3/ \4 5/ \1 2 给定的树 t&#xff1a;4 / \1 2 返回 tr…

FastAPI:Python 世界里最受欢迎的异步框架

FastAPI&#xff1a;Python 世界里最受欢迎的异步框架&#xff1a;https://www.cnblogs.com/traditional/p/14733610.html

论文浅尝 | Multimodal Few-Shot Learning with Frozen Language Models

笔记整理&#xff1a;李磊&#xff0c;浙江大学硕士&#xff0c;研究方向为自然语言处理 链接&#xff1a;https://arxiv.org/abs/2106.13884动机大规模的自回归语言模型&#xff08;如GPT&#xff09;在预训练阶段学习到了大量的知识&#xff0c;具有很好的学习新任务的能力&a…

Spark性能优化指南——高级篇

继基础篇讲解了每个Spark开发人员都必须熟知的开发调优与资源调优之后&#xff0c;本文作为《Spark性能优化指南》的高级篇&#xff0c;将深入分析数据倾斜调优与shuffle调优&#xff0c;以解决更加棘手的性能问题。 调优概述 有的时候&#xff0c;我们可能会遇到大数据计算中一…

LeetCode 342. 4的幂(位运算)

文章目录1. 题目2. 解题2.1 通用解法2.2 找规律1. 题目 给定一个整数 (32 位有符号整数)&#xff0c;请编写一个函数来判断它是否是 4 的幂次方。 示例 1: 输入: 16 输出: true示例 2: 输入: 5 输出: false进阶&#xff1a; 你能不使用循环或者递归来完成本题吗&#xff1f; …

格局打开,带你解锁 prompt 的花式用法

文 | Severus就如同《倚天屠龙记》中的主角张无忌&#xff0c;语言模型修炼了深厚的内功&#xff0c;但是遇到他的乾坤大挪移之前&#xff0c;他空有一身本领却不会用。但学会之后&#xff0c;于所有武功又都融会贯通。光明顶上血战六大派&#xff0c;他可以打出比崆峒派威力更…

自动机器学习pycaret,手把手教你自动提取特征、自动选取模型、自动评价

手把手教你自动提取特征、自动选取模型、自动评价 手把手教你使用pycaret Pycaret 3.0 功能抢先体验 5个PyCaret的常见误解

论文浅尝 | 基于异质图交互模型进行篇章级事件抽取

笔记整理&#xff1a;娄东方&#xff0c;浙江大学 & 恒生电子股份有限公司博士后&#xff0c;研究方向为事件抽取来源&#xff1a;ACL2021链接&#xff1a;https://arxiv.org/abs/2105.14924GitHub项目地址&#xff1a;https://github.com/RunxinXu/GIT本文关注篇章事件抽取…

GAN 的内在漏洞,只看眼睛就能找出虚拟人脸?

本文转载自公众号“夕小瑶的卖萌屋”&#xff0c;专业带逛互联网算法圈的神操作 -----》我是传送门 关注后&#xff0c;回复以下口令&#xff1a; 回复【789】 &#xff1a;领取深度学习全栈手册&#xff08;含NLP、CV海量综述、必刷论文解读&#xff09; 回复【入群】&#xf…

LeetCode 869. 重新排序得到 2 的幂(排序 全排列)

1. 题目 给定正整数 N &#xff0c;我们按任何顺序&#xff08;包括原始顺序&#xff09;将数字重新排序&#xff0c;注意其前导数字不能为零。 如果我们可以通过上述方式得到 2 的幂&#xff0c;返回 true&#xff1b;否则&#xff0c;返回 false。 示例 1&#xff1a; 输入…

Spark性能优化指南——基础篇

在大数据计算领域&#xff0c;Spark已经成为了越来越流行、越来越受欢迎的计算平台之一。Spark的功能涵盖了大数据领域的离线批处理、SQL类处理、流式/实时计算、机器学习、图计算等各种不同类型的计算操作&#xff0c;应用范围与前景非常广泛。在美团•大众点评&#xff0c;已…

吴恩达:机器学习的六个核心算法

吴恩达&#xff1a;机器学习的六个核心算法 数据派THU 2022-08-03 17:00 发表于北京 图片 来源&#xff1a;AI科技评论 本文约7200字&#xff0c;建议阅读15分钟 本文介绍了吴恩达在其创办的人工智能周讯《The Batch》上更新了一篇博文&#xff0c;总结了机器学习领域多个基础算…