第一次做leetcode的题目,虽然做的是水题,但是菜鸟太菜,刚刚入门,这里记录一些基本的知识点。大佬看见请直接路过。

https://leetcode-cn.com/problems/longest-word-in-dictionary/

下面是代码与我的解析:

 class Solution {
public: class Tree{
public://这里为了之后的调用需要明确,否则就被认定为是Tree的private,无法调用
bool has_words=false;
vector<Tree*> v; Tree():has_words(false),v(){};
//初始化时对v传递参数26是实际上是产生了关于vector的一位数组
static void wordsinsert(Tree* t,string aim){
for(char c:aim){
if(!t->v[c-'a'])t->v[c-'a']=new Tree;
t=t->v[c-'a'];
}
t->has_words=true;
} static bool searchwords(Tree* t,string aim){
for(char c:aim){
t=t->v[c-'a'];
if(!t->has_words)return false;
}
return true;
}
}; string longestWord(vector<string>& words) {
Tree* root=new Tree;
for(string aim:words){//注意熟悉遍历的方法
Tree::wordsinsert(root,aim);//由于Tree中的后两个函数都声明了static类型,所以这里可以在没有对应的类型实例的情形下借助类型名直接调用函数
}//详细关于静态函数的解析(一定要看仔细!)
string longest="";
for(string aim:words){
if(Tree::searchwords(root,aim)){
if(aim.size()>longest.size())longest=aim;
else if(aim.size()==longest.size()&&aim<longest)longest=aim;
}//字典序直接比较即可
}
return longest;
}
};

OK

Leetcode字典树-720:词典中最长的单词的更多相关文章

  1. Java实现 LeetCode 720 词典中最长的单词(字典树)

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

  2. leetcode 720. 词典中最长的单词

    /* 1.hashtable 把每个字符串都放到hashtable中 a.排序 长度不同,长的放在前面,长度相同,字典序小的放在前面 b.不排序 遍历数组,对于每个字符串判断它的所有前缀是否都在has ...

  3. [Swift]LeetCode720. 词典中最长的单词 | Longest Word in Dictionary

    Given a list of strings words representing an English Dictionary, find the longest word in words tha ...

  4. Leetcode720.Longest Word in Dictionary词典中最长的单词

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

  5. Trie - leetcode [字典树/前缀树]

    208. Implement Trie (Prefix Tree) 字母的字典树每个节点要定义一个大小为26的子节点指针数组,然后用一个标志符用来记录到当前位置为止是否为一个词,初始化的时候讲26个子 ...

  6. C#LeetCode刷题之#720-词典中最长的单词(Longest Word in Dictionary)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4120 访问. 给出一个字符串数组words组成的一本英语词典.从 ...

  7. HDU 1800 Flying to the Mars 字典树,STL中的map ,哈希树

    http://acm.hdu.edu.cn/showproblem.php?pid=1800 字典树 #include<iostream> #include<string.h> ...

  8. 输出字符串中最长的单词 C# 算法

    要求: 设计一个算法从一片英语文章或者英语字符串里面输出其中最长的单词. Input: string     Output: string 尽可能多的设计测试用例来测试这个算法. 考虑空间和时间复杂度 ...

  9. [leetcode]720. Longest Word in Dictionary字典中最长的单词

    b.compareTo(a) 这个函数是比较两个值得大小,如果b比a大,那么返回1 如果小,那么返回-1,相等返回0 如果比较的是字符串,那么比较字典编纂顺序,b靠前返回-1,靠后返回1 这个题的核心 ...

随机推荐

  1. 每天敲一点code

    下面这段代码摘自 <C#并发编程经典实例> 并行LINQ static IEnumerable<int> MultiplyBy2(IEnumerable<int> ...

  2. 最近面试 有人问 sqlite 用过么 sqlite 不是 嵌入式的 开发 么 难道最近还 web开发 了?

    找了一个 sqlite expert 安装了一下

  3. mongo 的 中文社区的 文档还是 挺不错的

    英文文档也奉上: http://api.mongodb.com/csharp/2.2/html/T_MongoDB_Bson_Serialization_Attributes_BsonIdAttrib ...

  4. Docker基础内容之镜像构建

    前言 Docker可以通过读取Dockerfile中的指令来自动构建图像.Dockerfile是一个文本文档,包含用户可以在命令行上调用的所有命令来组装一个图像.使用docker构建用户可以创建一个自 ...

  5. pycharm 选中单列快捷键

    直接键入 Alt + Shift +Insert 一次后就可以选中单列 再次键入就改回选中整行 如图: 第一键入 第二次键入

  6. QIIME2使用方法

    激活qiime2的执行环境:source activate qiime2-2019.4如何查看conda已有的环境:conda info -e 以下分析流程参考:https://docs.qiime2 ...

  7. 详解隐马尔可夫模型(HMM)中的维特比算法

    笔记转载于GitHub项目:https://github.com/NLP-LOVE/Introduction-NLP 4. 隐马尔可夫模型与序列标注 第3章的n元语法模型从词语接续的流畅度出发,为全切 ...

  8. gRPC in ASP.NET Core 3.x -- Protocol Buffer(2)Go语言的例子(下)

    第一篇文章(大约半年前写的):https://www.cnblogs.com/cgzl/p/11246324.html gRPC in ASP.NET Core 3.x -- Protocol Buf ...

  9. 构建一个学生Student,根据类Student的定义,创建五个该类的对象,输出每个学生的信息,计算并输出这五个学生Java语言成绩的平均值,以及计算并输出他们Java语言成绩的最大值和最小值。

    定义一个表示学生信息的类Student,要求如下: (1)类Student的成员变量: sNO 表示学号: sName表示姓名: sSex表示性别: sAge表示年龄: sJava:表示Java课程成 ...

  10. 如何提取CSDN博客正文内容

    document.getElementById("article_content").outerHTML; 在任意的一片博文运行以上代码都可以获得正文内容,但是对于代码.字体都没有 ...