ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

720. 词典中最长的单词 (tire 应用)

2022-06-04 13:05:26  阅读:172  来源: 互联网

标签:node words tire TrieNode 词典 单词 720 path children


 

难度简单

给出一个字符串数组 words 组成的一本英语词典。返回 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" 




 1 struct TrieNode {
 2     bool is_end;
 3     std::vector<TrieNode*> children;
 4     TrieNode() {
 5         this->is_end = false;
 6         this->children = std::vector<TrieNode*>(26);
 7     }
 8 };
 9 
10 
11 class Solution {
12     TrieNode* root = new TrieNode();
13     string long_str = "";
14 public:
15     void insert(string word) {
16         TrieNode* node = root;
17         for(auto ch : word) {
18             if (node->children[ch - 'a'] == nullptr) {
19                 node->children[ch - 'a'] = new TrieNode();
20             }
21             node = node->children[ch - 'a'];
22         }
23         node->is_end = true;
24     }
25     void dfs(TrieNode* node,string& path) {
26         if (path.size() > long_str.size()) {
27             long_str = path;
28         }
29         for(int i = 0; i < 26;i++) {
30             if (node->children[i] != nullptr && node->children[i]->is_end ) {
31                 path+=('a' + i);
32                 dfs(node->children[i],path);
33                 path.pop_back();
34             }
35         }
36     }
37     string longestWord(vector<string>& words) {
38         for(auto word : words) {
39             insert(word);
40         }
41         string path = "";
42         dfs(root,path);
43         return long_str;
44     }
45 };

 

标签:node,words,tire,TrieNode,词典,单词,720,path,children
来源: https://www.cnblogs.com/zle1992/p/16341662.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有