首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >词典中最长的单词

词典中最长的单词

作者头像
羽翰尘
发布于 2020-07-14 03:14:41
发布于 2020-07-14 03:14:41
95900
代码可运行
举报
文章被收录于专栏:技术向技术向
运行总次数:0
代码可运行

leetcode题号:720

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

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

示例 1:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
输入: 
words = ["w","wo","wor","worl", "world"]
输出: "world"
解释: 
单词"world"可由"w", "wo", "wor","worl"添加一个字母组成。

示例 2:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
输入: 
words = ["a", "banana", "app", "appl", "ap", "apply", "apple"]
输出: "apple"
解释: 
"apply""apple"都能由词典中的单词组成。但是"apple"得字典序小于"apply"

注意:

  • 所有输入的字符串都只包含小写字母。
  • words数组长度范围为[1,1000]。
  • words[i]的长度范围为[1,30]。

解答一

先将原字符数组按升序排列,然后从左到右遍历。 如果当前单词长度为1,或者能在合法单词哈希表中查到前缀,就加入合法单词哈希表

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Solution {
public:
    string longestWord(vector<string>& words) {
        unordered_map<string, int> myhash;
        sort(words.begin(), words.end());
        string res;
        int max_size = 0;
        for(auto &m : words){
            if(m.size() == 1 || myhash.find(m.substr(0, m.size() - 1)) != myhash.end()){
                myhash.insert(pair<string, int>(m, 0));
                if(m.size() > max_size){
                    res = m;
                    max_size = m.size();
                }
            }
        }
        return res;
    }
};

注意,我认为该题应该明确说明所有单词都只能从长度为1的单词开始加,不然像[“ap”, “app”]的答案应该为”app”, 因为它也是由其他单词添加了一个字母组成的。

注意: 此处用哈希表,或者用字典,其时间复杂度要好于用set。

解答二

使用最长前缀树,该树的具体构造需要再研究。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class TrieNode {
public: 
    bool is_word;
    vector<TrieNode*> children;
    TrieNode() : is_word(false), children(26, nullptr){}
    ~TrieNode(){
        for(TrieNode* child : children) if(child) delete child;
    }
};

class Solution {
public:
    string res_str;
    TrieNode* trie_root;
    string longestWord(vector<string>& words) {
        trie_root = new TrieNode();
        for(auto &word : words) add_word(word);
        string temp_str = "";
        my_find(trie_root, temp_str);
        return res_str;
    }
    void add_word(string &word){
        TrieNode *ptr = trie_root;
        for(auto ch : word){
            if(ptr->children[ch - 'a'] == NULL){
                ptr->children[ch - 'a'] = new TrieNode();
            }
            ptr = ptr->children[ch - 'a'];
        }
        ptr->is_word = true;
    }
    void my_find(TrieNode *root, string &res_word){
        if(root != NULL){
            for(int index = 0; index < 26; index++){
                if(root->children[index] != NULL && root->children[index]->is_word){
                    string new_str = res_word + char('a' + index);
                    if(new_str.size() > res_str.size()) res_str = new_str;
                    my_find(root->children[index], new_str);
                }
            }
        }
    }
    
};
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-07-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
微信小程序上传图片和文件
要有遥不可及的梦想,也要有脚踏实地的本事。———– Grapefruit.Banuit Gang(香柚帮)
全栈程序员站长
2022/09/07
2.6K0
微信小程序上传图片
//添加图片 joinPicture: function (e) { var index = e.currentTarget.dataset.index; var evalList = this.data.evalList; var that = this; var imgNumber = evalList[index].tempFilePaths; if (imgNumber.length >= 3) { wx.showModal({
达达前端
2022/04/29
1.9K0
借助云开发实现小程序朋友圈的发布与展示
这里就不多说了,如果你还不知道如何创建小程序项目可以去翻看下我之前的文章,也可以看下我录制的《10小时零基础入门小程序开发》
编程小石头
2019/10/12
8540
借助云开发实现小程序朋友圈的发布与展示
借助云开发实现小程序朋友圈的发布与展示丨实战
这里就不多说了,注意:一定要用自己的appid,所以你需要注册一个小程序(个人的就行)
腾讯云开发TCB
2019/10/22
9540
实战|如何使用云开发实现照片附件上传开发
云开发是腾讯云提供的云原生一体化开发环境和工具平台,为开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用。
腾讯云开发TCB
2021/11/25
1.5K0
实战|如何使用云开发实现照片附件上传开发
小程序上传wx.uploadFile - 小程序请假-请求
UploadTask wx.uploadFile(Object object) 将本地资源上传到服务器。客户端发起一个 HTTPS POST 请求,其中 content-type 为 multipart/form-data。使用前请注意阅读相关说明。
达达前端
2022/04/29
1.7K0
小程序上传wx.uploadFile - 小程序请假-请求
小程序的图片上传wx.uploadFile及后台PHP接收文件并存储到服务器[通俗易懂]
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/150010.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/05
2.5K0
微信小程序开发之多图片上传+服务端接收
  业务需求,这次需要做一个小程序同时选中三张图片一起上传到服务端,后端使用的.NET WEBAPI接收数据保存。
追逐时光者
2019/08/28
2.4K0
微信小程序开发之多图片上传+服务端接收
Django实战-小程序端图片上传
Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(表单)的使用。
小团子
2019/09/03
2.6K0
Django实战-小程序端图片上传
小程序上传图片加水印
注意事项: 1.如果在画图完成后,有对应操作时,必须在draw的callback后执行,比如图片预览、改变画布大小等 ctx.draw(false, function() { console.log(‘后续操作’);
全栈程序员站长
2022/07/04
1.3K0
小程序本地相册选择图片或相机拍照底部弹框功能
今天一位粉丝问了一个问题,关于小程序本地相册选择图片或相机拍照底部弹框功能,小程序根据文档来写,为什么没有底部弹框,点击按钮就直接打开了手机相册了。看了一下不是他代码的原因,也不是什么bug,而是只写了部分功能。今天把这两个功能连起来说一说。
王小婷
2018/12/26
1.6K0
用云开发CloudBase,实现小程序多图片内容安全检测
随笔川迹: 一个靠前排的90后具有情怀的技匠,路上正追逐斜杠青年的践行者,人人领读发起人。
腾讯云开发TCB
2020/06/09
1.6K0
小程序使用 Promise.all 完成文件异步上传
extends [微信小程序开发技巧总结(二) -- 文件的选取、移动、上传和下载 - Kindear - 博客园 (cnblogs.com)]
Kindear
2021/04/26
1.7K0
微信小程序上传图片到腾讯COS存储桶实战
作者:火种 最近为了实现在小程序上传图片到腾讯COS存储桶,把官方提供的demo,看了一遍又一遍,试了又试,错了又错,踏过一个又一个坑,终于从不懂,到懵懂,到懂。>.<,好累,在此过程就不赘述,直接开始,希望和我一样的小白也可能轻松用上腾讯COS存储桶。
加菲猫的VFP
2022/05/26
4.1K0
微信小程序上传图片到腾讯COS存储桶实战
「小程序JAVA实战」小程序上传短视频(46)
个人信息:用户上传短视频。源码:https://github.com/limingios/wxProgram.git 中wx-springboot 和 No.15 业务流程 用户选择视频(10秒限制),也可以通过摄像头拍摄 打开选择背景音乐。 可以选择音乐或者不选择输入视频的描述。 controller 上传视频 保存视频的截图 用户是否选择背景音乐 7.1 是:直接保存视频 7.2 否:合并视频和背景音乐,保存视频 微信插件 官方介绍:https://developers.weixin.qq.com/mi
IT架构圈
2019/07/08
2.5K0
「小程序JAVA实战」小程序上传短视频(46)
微信小程序快速入门开发指南(三)
          url: app.globalData.uploadfileUrl,  //后台接收上传文件的接口
初九之潜龙勿用
2024/06/20
2850
小程序聊天室|聊天对话小程序|仿微信界面
基于微信小程序开发的聊天室实战案例。很早之前就有开发过一个h5版聊天室,最近又开发了个小程序版聊天室,功能效果非常接近微信聊天,实现了消息、表情发送,小程序表情解析,图片、视频上传预览,打赏、红包等功能。
andy2018
2019/01/30
14.7K3
小程序聊天室|聊天对话小程序|仿微信界面
小程序实现图片上传,预览以及图片base64位处理
最近一段时间在做小程序项目,第一期功也完工了。需要好好总结一下经验,把项目中遇到的问题好好总结一下,遇到的问题,踩过的坑。今天写一个小程序实现图片上传,预览,以及删除,图片base64位处理。下面就是展示的效果
小周sir
2019/09/23
1.9K0
小程序实现图片上传,预览以及图片base64位处理
「小程序JAVA实战」小程序头像图片上传(中)(44)
PS:这次试用itools的方式在手机也演示了如何进行图片的选择和上传。wx的插件做的很棒,直接引用不会存在各种问题。稳~
IT架构圈
2019/07/08
9520
「小程序JAVA实战」小程序头像图片上传(中)(44)
小程序上传多张图片到springboot后台,返回可供访问的图片链接
其实这两个截图就可以看出,我们图片上传成功了,并且给小程序前端返回了可供访问的图片url。 话不多说,直接看代码。
编程小石头
2020/10/22
2.4K0
小程序上传多张图片到springboot后台,返回可供访问的图片链接
推荐阅读
相关推荐
微信小程序上传图片和文件
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档