【LeetCode】第720题——词典中最长的单词(难度:简单)

这是一篇关于如何利用Trie数据结构解决LeetCode上的一道问题——找出词典中最长的单词。通过构建Trie树,并在遍历过程中设置判断量,可以确定哪些单词可以通过其他单词逐步添加字母得到。文章提供了详细的解题思路、代码实现,并提醒读者这道看似简单的题目涉及了不少新知识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【LeetCode】第720题——词典中最长的单词(难度:简单)

题目描述

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

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

  1. 示例 1:
    输入:
    words = [“w”,“wo”,“wor”,“worl”, “world”]
    输出:“world”
    解释:
    单词"world"可由"w", “wo”, “wor”, 和 "worl"添加一个字母组成。

  2. 示例 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
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解题思路

现在引入一个新的名词——单词查找树(Trie),其根节点的val一般不放值或者放入一个无关的值,其后续所有孩子节点的val都只是一个字符,从根节点到叶子节点的顺序可以将遍历到的字符组合成一个字符串,就像英文输入法中输入单词的前几个字母就可以提示出以这几个字母为开头的英文单词的集合。

然后,以示例2为例,按照Trie可以构建apple、apply、banana三棵子树。这时需要引入一个判断量A(A是判断量的初始值),在构建Trie时只在最后一个节点赋某一不同于初始判断量的值B(各个B的值可以不一样)即可。如此一来,在遍历树时apple、apply这两棵树上的所有节点的判断量都不是A,而banana树上的第一个有效节点字符“b”的判断量是A,证明所给的字符串集合内没有其前置单词,banana在此时便失去了作为结果的价值。这时候只需对apple和apply字符串使用.length()和.compareTo()方法即可得出答案。

代码详解

class Solution {
   
    public String longestWord(String[] words) {
   
        Tire tire = new Tire();	// 构建Tire()对象,此对象的类需要自己编写
        tire.words = words;		// 为成员变量赋值
        int index = 0;			// wordsd的索引下标,即可作为上一小节提到的判断量B,又可方便索引
        for
MS-DOS 7.10介绍 =============== MS-DOS 7.10是目前功能最强大实用,且兼容性最好的DOS。而且由于它全面支持大硬盘、大内存、长文件名(LFN)、FAT32分区、可能直接启动Win3.x/9x等等,所以非常实用!尤其是对于大硬盘和FAT32分区的支持这点是最为重要的,因为现在的硬盘容量越来越大,例如30GB、50GB等硬盘现在越来越多,而旧版本的DOS就无法支持这些大硬盘。所以MS-DOS 7.10的功能是非常强大的,而且由于它可以自动做成与系统中已有的Win9x/NT/2K/XP+等系统的双启动,所以非常安全实用。 MS-DOS 7.10安装 =============== DOS71_1.IMG和DOS71_2.IMG两个文件分别为MS-DOS 7.10完整安装版的软盘IMG镜像文件,即安装盘1和安装盘2。要制作成安装盘,请用HD-COPY、WinImage之类的软件将它们分别写入软盘即做成真正的安装软盘。注意,是写入到软盘中,而不是复制文件,否则安装盘可能会无法启动。或者也可以用VMWare、Virtual PC、Bochs等虚拟机将它们(IMG镜像文件)做为虚拟软盘来直接使用并进行安装。 安装盘做好后,直接用上面的安装盘1启动系统,它就会自动启动MS-DOS 7.10安装程序,这时就可以按照提示(图形界面)以自动进行MS-DOS 7.10的安装了。这个安装程序可以自动将MS-DOS 7.10安装到硬盘中来使用。上面的安装盘2中还带有DOSSHELL、MSBACKUP等各种附加的DOS程序,也会一起安装的。说明:它可以自动与系统中已有的WinNT/2K/XP+、旧版本的DOSMS-DOS 6.x等系统做成双启动。 如果没有软盘而想把它们解开到硬盘上安装,请用UNDISK、DOSIMG之类的软件将它们全部解开到硬盘的一个文件夹中。注意:如果是两个IMG镜像文件的话,请将它们解开到硬盘的同一个路径下,例如“C:\DOSSETUP”,而不是两个不同的路径下。然后在纯DOS下进入此路径并运行SETUP即可开始安装。如果是解开到硬盘的一个文件夹上进行安装的话,在安装中安装程序可能会提示输入要复制的源文件所在路径,这时只要输入这个文件夹的路径(例如上面所述的“C:\DOSSETUP”)即可。 如果想用光盘进行安装的话,可以把IMG放在光盘中做为启动镜像(比如2.88MB启动镜像);或者下载“MS-DOS 7.10完整安装光盘ISO版”并直接启动以进行MS-DOS 7.10的安装。以下是MS-DOS 7.10完整安装版的光盘版(此ISO为可启动光盘的镜像): 安装光盘:http://newdos.yginfo.net/dosware/dos71cd.zip 由于MS-DOS 7.10的安装程序具有插件功能,以使得可以自动安装更多的程序,所以这个“MS-DOS 7.10完整安装光盘ISO版”中已包含有许多附件(例如一些MP3播放器、声卡驱动、汉字系统等)以让用户进行选择性的自动安装。如果是使用“MS-DOS 7.10完整安装软盘版”并想安装插件的话,可以在安装程序提示输入插件路径时插入相应的插件盘并确定即可,随后这些插件将会被自动随MS-DOS 7.10一起安装到系统中。如果不想安装插件或没有插件盘的话则可以直接跳过此步骤。 正因为MS-DOS 7.x的功能非常强大,微软公司推出的Windows 9x等GUI程序就是用了一个经过某些修改的精简/特别版的MS-DOS 7.x内核来启动的。而以上的MS-DOS 7.10完整安装版和Windows 9x所带的精简版的DOS相比之下功能也自然更加丰富,性能也更加稳定。也正由于MS-DOS 7.10的这些增强特点,所以在这个MS-DOS 7.10下可以直接进入Windows 3.x/9x等(毕竟Win3.x/9x只是DOS下的GUI程序),方法是先进入其相应的Windows文件夹/目录,然后用相应的WIN命令即可进入相应的Windows 3.x/9x即可,或者通过修改MSDOS.SYS的路径设置来直接实现。 如果系统中已安装了Win9x,再安装MS-DOS 7.10的话,安装程序在安装中通常会提示是否自动设置Win9x的路径,以便直接输入WIN命令就可以进入Win9x,这时请选择“是”。这样一来,MS-DOS 7.10安装成功并启动后,若想进入Win9x的话,只需在DOS命令行下输入WIN命令即可进入。如果系统中已安装了WinNT/2K/XP,再安装MS-DOS 7.10的话,安装程序通常会自动做成DOS与WinNT/2K/XP双启动。MS-DOS 7.10安装成功后,系统启动时会自动出现双启动菜单,选择菜单中的“MS-DOS 7.10”就可以进入安装好的MS-DOS 7.10了。 更详细信息和一些屏幕快照,请见以下文章: http://newdos.yginfo.net/dosart32.htm
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值