字典树

struct TrieNode
{bool isEnd;TrieNode *next[26];TrieNode(){isEnd = false;memset(next, 0, sizeof(next));}
};
class Trie
{TrieNode* root;
public:Trie(){root = new TrieNode();}void add(string word){TrieNode *node = root;for(int i = 0; i < word.size(); i++){char ch = word[i];if(node->next[ch - 'a'] == NULL){node->next[ch - 'a'] = new TrieNode();}node = node->next[ch - 'a'];}node->isEnd = true;}bool check(string& word,int count,int start){TrieNode *node = root;for(int i = start; i < word.size(); i++){if(node->next[word[i] - 'a'] == NULL) return false;node = node->next[word[i] - 'a'];if(node->isEnd == true){if(i == word.size()-1) return count >= 1;if(check(word, count+1, i + 1)) return true;}}return false;}
};class Solution {public:vector<string> findAllConcatenatedWordsInADict(vector<string>& words) {Trie dict;vector<string>res;for(int i = 0; i < words.size(); i++){dict.add(words[i]);}for(int i = 0; i < words.size(); i++){if(dict.check(words[i], 0, 0) == true){res.push_back(words[i]);}}return res;}
};

check那里:

bool check(string& word,int count,int start)
{TrieNode *node = root;for(int i = start; i < word.size(); i++){if(node->next[word[i] - 'a'] == NULL) return false; // abc虽然可以拆成a、b,count也大于1但c并不存在,所以会回溯到上一层node = node->next[word[i] - 'a'];if(node->isEnd == true){if(i == word.size()-1) return count >= 1;       //要到末尾才能判断,单词必须完全被拆分,count==0表示只有一个单词if(check(word, count+1, i + 1)) return true; //递归下去,如果不成功会回到本层}}return false;}

[leetcode] 472. 连接词相关推荐

  1. Java实现 LeetCode 472 连接词

    472. 连接词 给定一个不含重复单词的列表,编写一个程序,返回给定单词列表中所有的连接词. 连接词的定义为:一个字符串完全是由至少两个给定数组中的单词组成的. 示例: 输入: ["cat& ...

  2. JAVA程序设计:连接词(LeetCode:472)

    给定一个不含重复单词的列表,编写一个程序,返回给定单词列表中所有的连接词. 连接词的定义为:一个字符串完全是由至少两个给定数组中的单词组成的. 示例: 输入: ["cat",&qu ...

  3. php删除英文链接词,英语写作词汇大全:转折连接词

    1.by this time 此时 2. at the same time 同时 3. after a while 过了一会儿 4. after a few days 几天以后 5. second/ ...

  4. 技能分享 | 麦肯锡教给我的写作武器:连接词是文章通顺的灵魂

    上一篇文章中,分享了<麦肯锡教给我的写作武器>中提及的一个表达技巧,即主语谓语清晰.这个技巧是应用于单个句子.接下来这篇心得分享,涉及句子与句子之间,也就是如何讲好一段话. 本文作者two ...

  5. 英语语法---连接词详解

    英语语法 Table of Contents 单词-连接词详解 1. 连接词的定义 2. 连接词的分类 单词-连接词详解 本章主要目的:了解连接词定义及分类 1. 连接词的定义 连接词:用于连接单词. ...

  6. 河南专升本公共英语语法考点分析---代词、介词、连接词

    语法考点分析---代词.介词.连接词 一.代词 代词用法注意点 代词考点分析 二.介词 相近介词(短语)辨析 介词考点分析 三.连词 使用连词注意点 连词考点分析 一.代词 代词用法注意点 名词性所有 ...

  7. 语篇分析之连接词分析

    连接词(discourse connectives)分析可以分为两种: 语篇关系预测,包括显示关系和隐式关系,显示关系有明显的连接词存在,隐式关系没有明显的连接词存在,但是可推断出来 语篇连接词的预测 ...

  8. 考博英语-连接词What与although的用法

    考博英语让大家头痛的问题有两个,一是词汇量不够,很多单词不认识,另一个就是单词都认识但是句子依然不知道意思.只要这两个问题解决了,考博英语的难度就降低了很多. 就考博英语的阅读理解来看,大家存在的问题 ...

  9. 【文本文件单词数统计】统计《哈姆雷特》作品文本文件中除一些冠词、代词、连接词之外出现最多的单词,打印数量最多的前十个单词

    统计是计算科学.管理学.社会学.数学等诸多领域的基本问题,相关问题.方法和技术组成了一门学科,即"统计学" 问题描述如下: 利用python程序统计<哈姆雷特>作品中出 ...

最新文章

  1. 第一本用机器生成的书籍由施普林格•自然出版
  2. redis3.2.3安装部署实战
  3. 2022-03-17
  4. 《机器人编程实战》一一第2章 机器人词汇
  5. 生产环境中Oracle常用函数总结
  6. STM32 NVIC中断
  7. UI设计为什么要使用Figma?
  8. 重学C---------第五节:常量
  9. css设置table阴影浮动效果
  10. 【自然语言处理系列】预训练模型原理和实践综述 | 附汇报PPT原稿和18篇论文
  11. 01 安装STEP7软件和USB驱动
  12. 【电路设计】AD17使用及PCB绘制总结
  13. python catia 接口_CATIA二次开发工程制图接口:
  14. Java-根据经纬度计算距离
  15. java实现中文大写金额转小写数字
  16. comet 简单了解
  17. 又双叒叕可以 4 折买书了!!来薅羊毛了!
  18. java在线观看(jav在线网站)
  19. jupyterlab:Failed to load the jupyterlab-git server extension问题如何解决?
  20. Uniforms(uniform变量)

热门文章

  1. python是什么类型的编程语言-Python是一种什么样的编程语言?解释?编译?汇编?机械?...
  2. python爬虫步骤-Python爬虫详解,每一个步骤都给你细腻的讲解(附源码)
  3. python儿童入门视频-老男孩Python视频教程全套完整版!无偿分享~
  4. python必背代码-Python高手必修课:如何让 Python 代码更易读,推荐收藏
  5. python用什么来写模块-Python常用模块——模块介绍与导入
  6. HTML5网页语音识别功能演示
  7. 科大讯飞离线语音识别安装与运行
  8. android 下拉刷新监听,说说在 Android 的 RecyclerView 中如何实现下拉刷新
  9. python数据分析天气预报_数据分析----天气预报走向(pygal)
  10. vue3.0新特性及用法