leetcode-每日一题2022.3.17 词典中最长的单词

2023-11-14

题目

力扣

思路 模拟

先把words中的字符串放到哈希表里,再遍历words的每一个字符串,判断它从0开始的每一个子串是否存在于哈希表里。

代码

class Solution {
public:
    string longestWord(vector<string>& words) {
        int ans = -1;
        unordered_set<string> set;
        for(string word : words)
            set.insert(word);
        for(int i = 0; i < words.size(); i++){
            if(ans == -1 || words[ans].size() < words[i].size() || (words[ans].size() == words[i].size() && words[ans] > words[i])){
                bool flag = true;
                for(int j = 1; j < words[i].size(); j++){
                    if(set.count(words[i].substr(0,j)) == 0)
                        flag = false;
                }
                if(flag) ans = i;
            }
        }
        return ans == -1 ? "" : words[ans];
    }
};

思路 字典树

定义字典树数据结构,并定义insert和search方法,如果符合条件,每一位的isEnd都要是true才可以。

代码

class Trie{
private:
    bool isEnd;
    Trie* next[26];
public:
    Trie(){
        isEnd = false;
        memset(next, 0, sizeof(next));
    }
    void insert(string word){
        Trie* node = this;
        for(char ch : word){
            if(node -> next[ch - 'a'] == nullptr){
                node -> next[ch - 'a'] = new Trie();
            }
            node = node -> next[ch - 'a'];
        }
        node -> isEnd = true;
    }

    bool search(string word){
        Trie* node = this;
        bool ans = false;
        for(char ch : word){
            node = node -> next[ch - 'a'];
            if(node -> isEnd == false)
                return false;
        }
        return true;
    }
};

class Solution {
public:
    string longestWord(vector<string>& words) {
        string ans = "";
        Trie* trie = new Trie();
        for(string word : words)
            trie -> insert(word);
        for(string word : words){
            if(ans.size() < word.size() || (ans.size() == word.size() && ans > word)){
                if(trie -> search(word))
                    ans = word;
            }
        }
        return ans;
    }
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

leetcode-每日一题2022.3.17 词典中最长的单词 的相关文章

随机推荐

  • SQLI-Labs(18-22关)请求头注入

    十八关 这里这个提示就是一些浏览器会记录我们的IP信息 那么记录了就会被存储到数据库中就有可能存在SQL注入 这里需要引入几个数据头信息 User agent 浏览器的身份识别字符串 简单来说就是根据这个字段来判断是通过PC端还是手机端访问
  • CentOS一键配置rsync服务器脚本

    1 保存下面的代码为一个文件 上传到服务器端 名称为rsync sh bin bash rsync Written by zhumaohai For more information please visit http www centos
  • JavaSE的复习:Java基本语法

    1 变量 变量的分类 按数据类型 对于每一种数据都定义了明确的具体数据类型 强类型语言 在内存中分配了不同大小的内存空间 弱类型语言则不用明确指明数据类型 例如js var 变量的分类 按声明的位置的不同 在方法体外 类体内声明的变量称为成
  • Oracle安装 在注册表中没有找到指定的主目录名 的解决方案

    在安装数据库的时候 报了个错 在注册表中没有找到指定的主目录名 解决方案就是 忽略 此错误并不影响Oracle的正常使用 亲测可行 也不排除不可用的情况 如果谁遇到了请告知 我将继续补充
  • vue-cli3配置proxy解决前后端域名/端口不一致引起的跨域问题

    错误代码 前端 import axios from axios import VueAxios from vue axios Vue use VueAxios axios this axios post http localhost 808
  • (一)JMeter性能测试,完整入门篇:性能测试操作步骤

    原文转自 https blog csdn net lovesoo article details 78579547 1 Jmeter简介 Apache JMeter是一款纯java编写负载功能测试和性能测试开源工具软件 相比Loadrunn
  • sentinel

    文章目录 1 sentinel简介 1 1 sentinel解决的问题 1 2 服务保护技术对比 2 微服务整合sentinel 2 1 引入sentinel依赖 2 2 配置控制台地址 3 限流规则 3 1 流控模式 3 2 流控效果 4
  • 华为路由交换学习篇-ACL

    目录 ACL访问控制列表 基本ACL 高级ACL 实验一 ACL访问控制列表 ACL的分类 按照功能来分 可以分为基本ACL 高级ACL 基于接口的ACL 二层ACL 自定义的ACL 基于MPLS的ACL 基本ACL6 高级ACL6 基本A
  • 考研:研究生考试(十五天学完)之研究生学霸重点知识点总结之考研必知(考研时间/科目/必备物件)、【考研政治】/【考研英语】/【考研数学】经验总结(历年规律分析、技巧总结、经验分享)

    考研 研究生考试 十五天学完 之研究生学霸重点知识点总结之考研必知 考研时间 科目 必备物件 考研政治 考研英语 考研数学 经验总结 历年规律分析 技巧总结 经验分享 文章转自 考研 研究生考试 十五天学完 之研究生学霸重点知识点总结之考研
  • Guava学习笔记之Maps(1):Maps.uniqueIndex(Iterable, Function)

    Guava官方文档 https github com google guava wiki CollectionUtilitiesExplained 官方文档这样描述 Maps uniqueIndex Iterable Function ht
  • 【JavaWeb】四个Scope

    英文科普 scope 范围 域 1 page里的变量没法从index jsp传递到test jsp 只要页面跳转了 它们就不见了 以页面为单位 2 request里的变量可以跨越forward前后的两页 但是只要刷新页面 它们就重新计算了
  • Java中对象的比较

    目录 一 基本数据类型的比较 二 引用数据类型比较 1 equals 方法 1 实现Comparable接口 2 传比较器 一 基本数据类型的比较 我们在比较基本类型的数据时 通常用 来判断 也比较简单 int a 3 int b 5 Sy
  • 谈谈我对服务熔断、服务降级的理解

    伴随着微服务架构被宣传得如火如荼 一些概念也被推到了我们面前 管你接受不接受 其实大多数概念以前就有 但很少被提的这么频繁 现在好像不提及都不好意思交流了 想起有人总结的一句话 微服务架构的特点就是 一解释就懂 一问就不知 一讨论就吵架 其
  • 机器学习 数据的采集和清洗

    本人找到了一条路 不知道对错的路 采集训练的 数据和清理数据 第一步 采集 涉及到如何利用爬虫采集网页csv文件 数据是在UCI 上的 UCI官网如下http archive ics uci edu ml index php 就拿里面最热门
  • java字典树(前缀树) - Kaiqisan

    大家好 都吃晚饭了吗 我是Kaiqisan 是一个已经走出社恐的一般生徒 这一篇文章咱来讲讲字典树把 之前在给别人代答辩数据结构的时候初次了解到这个概念 今天在刷算法课的时候右看到了 所以就有了这个视频 首先还是明确一个概念 什么是字典树
  • 微软Hyper-V虚拟机复制实现双机备份过程

    这个方案是通过hyper v的虚拟机复制功能实现 该方案需要至少两台安装了hyper v功能的服务器 只需在其中一台安装虚拟机系统 另一台虚拟机服务器作为副本接收服务器 部署过程如下 1 比如有两台pc 下面称为pc1 pc2 pc1上面的
  • NodeJS的os模块

    附录 常用HTTP响应头和请求头信息对照表 Node简介 第一个node程序 module 模块系统 npm包管理器 模块系统优先级 认识http内置模块 url内置模块 path内置模块 fs内置模块 http模块服务端进阶 http报文
  • 区块链学习笔记(四)【Merkle树】

    一 字典树 字典树的三个基本特征 1 根节点不包含字符 为空 除根节点外每一个节点只包含一个字符 2 从根节点到某一个节点 路径上经过的字符连接起来 就是该节点对应的字符串 3 每个节点包含的所有子节点的字符都不相同 优势 相比较于哈希表
  • 云计算基础教程(第2版)笔记——基础篇与技术篇介绍

    文章目录 前言 第一篇 基础篇 一 绪论 1 1 云计算的概念以及特征 1 1 1云计算的基本概念 1 1 2云计算的基本特征 1 2 云计算发展简史 1 3 三种业务模式介绍 1 基础设施即服务 IaaS 2 平台即服务 PaaS 3 软
  • leetcode-每日一题2022.3.17 词典中最长的单词

    题目 力扣 思路 模拟 先把words中的字符串放到哈希表里 再遍历words的每一个字符串 判断它从0开始的每一个子串是否存在于哈希表里 代码 class Solution public string longestWord vector