[leetcode] 472. 连接词
字典树
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. 连接词相关推荐
- Java实现 LeetCode 472 连接词
472. 连接词 给定一个不含重复单词的列表,编写一个程序,返回给定单词列表中所有的连接词. 连接词的定义为:一个字符串完全是由至少两个给定数组中的单词组成的. 示例: 输入: ["cat& ...
- JAVA程序设计:连接词(LeetCode:472)
给定一个不含重复单词的列表,编写一个程序,返回给定单词列表中所有的连接词. 连接词的定义为:一个字符串完全是由至少两个给定数组中的单词组成的. 示例: 输入: ["cat",&qu ...
- php删除英文链接词,英语写作词汇大全:转折连接词
1.by this time 此时 2. at the same time 同时 3. after a while 过了一会儿 4. after a few days 几天以后 5. second/ ...
- 技能分享 | 麦肯锡教给我的写作武器:连接词是文章通顺的灵魂
上一篇文章中,分享了<麦肯锡教给我的写作武器>中提及的一个表达技巧,即主语谓语清晰.这个技巧是应用于单个句子.接下来这篇心得分享,涉及句子与句子之间,也就是如何讲好一段话. 本文作者two ...
- 英语语法---连接词详解
英语语法 Table of Contents 单词-连接词详解 1. 连接词的定义 2. 连接词的分类 单词-连接词详解 本章主要目的:了解连接词定义及分类 1. 连接词的定义 连接词:用于连接单词. ...
- 河南专升本公共英语语法考点分析---代词、介词、连接词
语法考点分析---代词.介词.连接词 一.代词 代词用法注意点 代词考点分析 二.介词 相近介词(短语)辨析 介词考点分析 三.连词 使用连词注意点 连词考点分析 一.代词 代词用法注意点 名词性所有 ...
- 语篇分析之连接词分析
连接词(discourse connectives)分析可以分为两种: 语篇关系预测,包括显示关系和隐式关系,显示关系有明显的连接词存在,隐式关系没有明显的连接词存在,但是可推断出来 语篇连接词的预测 ...
- 考博英语-连接词What与although的用法
考博英语让大家头痛的问题有两个,一是词汇量不够,很多单词不认识,另一个就是单词都认识但是句子依然不知道意思.只要这两个问题解决了,考博英语的难度就降低了很多. 就考博英语的阅读理解来看,大家存在的问题 ...
- 【文本文件单词数统计】统计《哈姆雷特》作品文本文件中除一些冠词、代词、连接词之外出现最多的单词,打印数量最多的前十个单词
统计是计算科学.管理学.社会学.数学等诸多领域的基本问题,相关问题.方法和技术组成了一门学科,即"统计学" 问题描述如下: 利用python程序统计<哈姆雷特>作品中出 ...
最新文章
- 第一本用机器生成的书籍由施普林格•自然出版
- redis3.2.3安装部署实战
- 2022-03-17
- 《机器人编程实战》一一第2章 机器人词汇
- 生产环境中Oracle常用函数总结
- STM32 NVIC中断
- UI设计为什么要使用Figma?
- 重学C---------第五节:常量
- css设置table阴影浮动效果
- 【自然语言处理系列】预训练模型原理和实践综述 | 附汇报PPT原稿和18篇论文
- 01 安装STEP7软件和USB驱动
- 【电路设计】AD17使用及PCB绘制总结
- python catia 接口_CATIA二次开发工程制图接口:
- Java-根据经纬度计算距离
- java实现中文大写金额转小写数字
- comet 简单了解
- 又双叒叕可以 4 折买书了!!来薅羊毛了!
- java在线观看(jav在线网站)
- jupyterlab:Failed to load the jupyterlab-git server extension问题如何解决?
- Uniforms(uniform变量)
热门文章
- python是什么类型的编程语言-Python是一种什么样的编程语言?解释?编译?汇编?机械?...
- python爬虫步骤-Python爬虫详解,每一个步骤都给你细腻的讲解(附源码)
- python儿童入门视频-老男孩Python视频教程全套完整版!无偿分享~
- python必背代码-Python高手必修课:如何让 Python 代码更易读,推荐收藏
- python用什么来写模块-Python常用模块——模块介绍与导入
- HTML5网页语音识别功能演示
- 科大讯飞离线语音识别安装与运行
- android 下拉刷新监听,说说在 Android 的 RecyclerView 中如何实现下拉刷新
- python数据分析天气预报_数据分析----天气预报走向(pygal)
- vue3.0新特性及用法