首页 > 其他分享 >720. 词典中最长的单词

720. 词典中最长的单词

时间:2024-09-12 23:35:03浏览次数:7  
标签:node ch word self children 单词 720 answer 词典

题目链接 720. 词典中最长的单词
思路 Trie树的经典应用
题解链接 官方题解
关键点 构建Trie树
时间复杂度 \(O(\sum_{i}\#\text{word}_{i})\)
空间复杂度 \(O(\sum_{i}\#\text{word}_{i})\)

代码实现:

class Trie:
    def __init__(self):
        self.children = [None] * 26
        self.isEnd = False

    def insert(self, word):
        node = self
        for ch in word:
            ch = ord(ch) - ord("a")
            if not node.children[ch]:
                node.children[ch] = Trie()
            node = node.children[ch]
        node.isEnd = True

    def search(self, word):
        node = self
        for ch in word:
            ch = ord(ch) - ord("a")
            if node.children[ch] is None or not node.children[ch].isEnd:
                return False
            node = node.children[ch]
        return True


class Solution:
    def longestWord(self, words: List[str]) -> str:
        tree = Trie()
        for word in words:
            tree.insert(word)
        answer = ""
        for word in words:
            if tree.search(word) and (
                len(word) > len(answer) or len(word) == len(answer) and word < answer
            ):
                answer = word
        return answer

标签:node,ch,word,self,children,单词,720,answer,词典
From: https://www.cnblogs.com/WrRan/p/18411343

相关文章

  • 键盘特殊字符对应的英语单词
    本文记述了常见英语键盘上的特殊符号所对应的英语单词,全文如下。符号英语单词备注`backtick~tilde!exclamationpoint@at#number/pound$dollar%percentage^caret&ampersand*asterisk(openparenthesis/openro......
  • 单词游戏 题解
    四倍经验51nod2875单词游戏acwing1185.单词游戏洛谷SPOJWORDS1-PlayonWords单词PlayonWords我们可以将每一个字母看成一个节点,这样我们就有了一个包含26个节点的图,对于读入的单词,我们将首字母和尾字母对应的节点之间建有向边(中间的字母没什么用就不管了)。此......
  • Java实现英语作文单词扫盲程序
    来自背英语四级单词的突发奇想:是否可以通过Java语言实现一个随机抽取作文中单词进行复习的程序。首先,展示下成果:点击查看代码packageDemo;importjava.util.ArrayList;importjava.util.Random;importjava.util.Scanner;publicclassrandom_words{publicstati......
  • 51nod 1720 祖玛
    51nod1720祖玛这又是一个区间dp,但这题又和其他的不一样,这题又用记忆化搜索,但是多学一种方法也没事,但其实用搜索后就模拟即可了。#include<bits/stdc++.h>usingnamespacestd;//定义全局变量intn;//数组长度intdp[505][505];//dp[l][r]表示在区间[l,r]之间的......
  • 每日OJ_牛客_单词倒排(字符串模拟)
    目录牛客_单词倒排(字符串模拟)解析代码牛客_单词倒排(字符串模拟)单词倒排__牛客网时间限制:C/C++1秒,其他语言2秒空间限制:C/C++32M,其他语言64M题目描述:对字符串中的所有单词进行倒排。说明:1、构成单词的字符只有26个大写或小写英文字母;2、非构成单词的字符均视为单词......
  • c语言编译器IDE英汉翻译词典程序代码
    #include<stdio.h>#include<string.h>#include<stdlib.h>#include<math.h>typedefstruct{charenglish[50];charchinese[50];}WordTranslation;intmain(){intx;intn,g=1;while(g){n=0;WordTranslationtranslations[......
  • springboot+vue英语四六级单词学习系统【程序+论文+开题】计算机毕业设计
    系统程序文件列表开题报告内容研究背景在全球化日益加深的今天,英语作为国际通用语言的重要性不言而喻。对于广大中国学生来说,英语四六级考试不仅是衡量其英语水平的重要标尺,也是升学、就业不可或缺的敲门砖。然而,词汇作为语言学习的基础,往往是考生们备考路上的最大障碍。传......
  • FP7209:非同步升压恒流LED区动IC
    前言:LED驱动芯片是什么?LED驱动器(LEDDriver),是指驱动LED发光或LED模块组件正常工作的电源调整电子器件。由于LEDPN结的导通特性决定,它能适应的电源电压和电流变动范围十分狭窄,稍许偏离就可能无法点亮LED或者发光效率严重降低,或者缩短使用寿命甚至烧毁芯片。现行的工频电源和常......
  • 在Win10上安装抓WIFI空口包的TP_LINK(TL-WDN7200H)网卡驱动指导
    在Win10上安装抓WIFI空口包的TP_LINK(TL-WDN7200H)网卡驱动指导1关闭win0驱动程序强制签名选择所有设置选择更新和安全选择恢复中的立即重启进入下一个界面,在下一个界面中选择疑难解答进入疑难解答界面,选择高级选项进入高级选项界面,选择启动设置点击重启进入启动......
  • leetcode刷题day9|字符串部分(151.翻转字符串里的单词、卡码网:55.右旋转字符串)
    前言:字符串章节的第二部分,复习第一部分的知识加提升。151.翻转字符串里的单词链接:https://leetcode.cn/problems/reverse-words-in-a-string/前言:不使用Java内部方法实现思路:先去除字符串中的空格;将整个字符串反转;将单词再一次反转。代码如下:classSolution{pub......