单词

139. 单词拆分

扶醉桌前 提交于 2019-12-07 18:22:29
题目描述:   给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。   说明:     拆分时可以重复使用字典中的单词。     你可以假设字典中没有重复的单词。   示例 1:     输入: s = "leetcode", wordDict = ["leet", "code"]     输出: true     解释: 返回 true 因为 "leetcode" 可以被拆分成 "leet code"。   示例 2:     输入: s = "applepenapple", wordDict = ["apple", "pen"]     输出: true     解释: 返回 true 因为 "applepenapple" 可以被拆分成 "apple pen apple"。      注意你可以重复使用字典中的单词。   示例 3:     输入: s = "catsandog", wordDict = ["cats", "dog", "sand", "and", "cat"]     输出: false 题目解析: 1、使用记忆法递归的方法 (1)、将列表重新修改为Map<char,String>; (2)、建立一个列表noMate,用来维护无法匹配的字符串。 (3)、对入参s的首字母进行判断

给出两个单词,找到它们的最短距离 (以它们之间隔了多少个单词计数)。

天涯浪子 提交于 2019-12-07 10:07:17
有一篇文章内含多个单词,现给定两个单词,请设计一个高效算法,找出文中这两个单词的最短距离(即最少相隔的单词数,也就是两个单词在文章中位置的差的绝对值)。 给定一个string数组article,代表所给文章,同时给定文章的单词数n和待查找的两个单词x和y。请返回两个单词的最短距离。保证两个单词均在文中出现且不相同,同时保证文章单词数小于等于1000。 代码如下 public class Distance { public int getDistance(String[] s, int n, String x, String y) { //两个单词均在文中出现且不相同 int startX=-1, endY = -1;//1和0之间间隔为1 int minD = Integer.MAX_VALUE; for(int i=0; i<s.length; i++){ if(s[i].equals(x)) startX=i; else if(s[i].equals(y)) endY=i; else continue; //两个元素的距离:startX-endY的绝对值,与当前记录的最小间距minD比,取小的 if(startX!=-1 && endY!=-1) minD=Math.min(Math.abs(startX-endY), minD); } return minD; } }

大学英语四六级考试有什么备考技巧?

痴心易碎 提交于 2019-12-07 05:44:37
大学英语四六级考试资料 包括电子教材、四级词汇教材、六级词汇教材、历年考试真题、真题解析、听力电子教材和音频、阅读专项练习教材、作文强化练习教材、口语考试课程、口语考试电子教材、考试视频课程、视频讲解、电子教材等! 重点来啦! 怎么领取?公众号超乎想象领取考试资料,赶快领取,尽早安排备考计划!专业提供各省 初级会计、中级会计、注册会计师、全国计算机等级考试、英语四六级、银行从业、证券从业、基金从业、期货从业、经济师、审计师、教师资格证、考研、公务员、一/二建的超强悍高效备考资料! 知识兔下面分享一篇考试经验: 一星期的努力,直接从421分到563分,话不多说直接上图!! 第一次 第二次 四六级考高分其实是很容易的,难的是雅思托福那些好吗!!! 第一次忙着家教、艺术团表演、期末复习去了,所以是裸考,也不知道谁给我的勇气竟敢裸考,高中最差的就是英语那一科(捂脸) 第二次因为忙挑战杯和初级会计还有别的事情,只剩下一个星期复习时间,于是拼了命地学习,还好考得不错。 英语六级还是可以临时抱佛脚,只剩下一个星期的话,这个佛脚还是有点沉的。具体怎么做呢?往下看就知道了。 多做真题!多做真题!多做真题!抱住往年真题这个大腿吧。 一、关于单词 我是在要考六级的前一个星期开始拼命地做真题的。每天完成2套。 试卷上所有的生词都被我抄下在一个本子上,注明基本意思(所以要买一份有详细译文的六级试卷

正则表达式总结

两盒软妹~` 提交于 2019-12-06 13:08:42
本文学习总结linux系统下的正则表达式;本文总结了 朱双印 的正则表达式成果。 传送门 正则表达式总结: 一、匹配“行”: ---- 匹配行首字符串:“*” ; 举例: grep --color "*hello" re.txt //匹配以“hello”开头的行; ---- 匹配行尾字符串:“$”; 举例: grep --color "hello$" re.txt //匹配以 "hello"结尾的行; 二、匹配“词”: ---- 匹配“词首”:" \b 或者 <\ "; ---- ---- 举例: grep --color "\bhello" re.txt //匹配以hello开头的单词; ---- 匹配“词尾”:" \b 或者 \> "; ---- ---- 举例: grep --color "hello\>" re.txt //匹配以hello结尾的单词; ---- 匹配“单词”:" \b\b或\<\> " ; //匹配完整单词 ; ---- ---- 举例:grep --color "\" re.txt // 匹配单词hello; ---- 匹配“非单词边界”(字符边界)(非词首): " \B "(含义:包含字符串,但不在词首); ---- ---- 举例:grep "\Bhello" re.txt //匹配单词包含hello,但hello不在词首; ---- 匹配

elasticsearch倒排索引介绍

白昼怎懂夜的黑 提交于 2019-12-06 10:23:26
目录 正排与倒排索引 倒排索引的核心组成 一个例子 – Elasticsearch Elasticsearch的 倒排索引 正排与倒排索引 目录 – 正排 正排索引是文档id到单词的一个关系 倒排索引是单词到文档id的一个关系 倒排索引的核心组成 倒排索引包含两个部分 单词词典(Term Dictionary),记录所有文档的单词,记录单词到倒排列表的关联关系 单词词典一般比较大,可以通过B+树或哈希链法实现,以满足高性能的插入与查询 倒排列表(Posting List)- 记录了单词对应的文档结合,由倒排索引项组成 倒排索引项(Posting) 文档ID 词频TF – 该单词在文档中出现的次数,用于相关性评分 位置(Position)- 单词在文档中分词的位置。用于语句搜索(phrase query) 偏移(Offset)- 记录单词的开始结束位置,实现高亮显示 一个例子 – Elasticsearch Elasticsearch的 倒排索引 Elasticsearch的JSON文档中的每个字段,都有自己的倒排索引 可以指定对某些字段不做索引 优点:节省存储空间 缺点:字段无法被索引 来源: https://www.cnblogs.com/anyux/p/11977321.html

字典树(Trie)详解

狂风中的少年 提交于 2019-12-06 08:35:36
详解字典树(Trie) 本篇随笔简单讲解一下信息学奥林匹克竞赛中的较为常用的数据结构——字典树。字典树也叫Trie树、前缀树。顾名思义,它是一种针对字符串进行维护的数据结构。并且,它的用途超级广泛。建议大家熟练掌握。 字典树的概念 字典树,顾名思义,是关于“字典”的一棵树。即:它是对于字典的一种存储方式(所以是一种数据结构而不是算法)。这个词典中的每个“单词”就是从根节点出发一直到某一个目标节点的路径,路径中每条边的字母连起来就是一个单词。 上图理解: (标橙色的节点是“目标节点“,即根节点到这个目标节点的路径上的所有字母构成了一个单词。) 从这张图我们可以看出,字典树就是一棵树(emm...有些废话的嫌疑),只不过,这棵树的每条边上都有一个字母,然后这棵树的一些节点被指定成了标记节点(目标节点)而已。 这就是字典树的概念。结合上面说的概念,上图所示的字典树包括的单词分别为: a abc bac bbc ca 字典树的功能 根据字典树的概念,我们可以发现:字典树的本质是把很多字符串拆成单个字符的形式,以树的方式存储起来。所以我们说字典树维护的是”字典“。那么根据这个最基本的性质,我们可以由此延伸出字典树的很多妙用。简单总结起来大体如下: 1、维护字符串集合(即 字典 )。 2、向字符串集合中插入字符串(即 建树 )。 3、查询字符串集合中是否有某个字符串(即 查询 )。 4

EOJ Monthly 2019.11 A(进制转换)

女生的网名这么多〃 提交于 2019-12-06 05:25:01
“欢迎您乘坐东方航空公司航班 MU5692 由银川前往上海......” “我们的飞机很快就要起飞了,请收起小桌板,摘下耳机......” 收起了小桌板,摘下了耳机,Cuber QQ 突然无所事事了。 放耳机进书包的时候,Cuber QQ 无意带出了一些小纸条。是以前的回忆。 纸条在书包中已经存在了不知道多久。水渍泛黄了纸张,有些字他不能认出来。 具体来说,信件是一个包含 N 个字母的单词。其中有 M 个难以辨认的字母,用字符 # 代替。 Cuber QQ 用残存的回忆给对每个难以辨认的字母都给出了 K 个不同的候选字母。 为了方便比较哪个更接近于自己的回忆,Cuber QQ 在纸上列出了所有可能的单词。 在看过这些单词以后,Cuber QQ 认为按照字典序排名,第 X 个单词就是原来的单词。 你能知道 Cuber QQ 以前写了什么吗? 输入格式 第一行整数 N,M,K 和 X (1≤N≤500000,1≤M≤N,1≤K≤26,1≤X≤1018) 。 第二行长度为 N 的单词,包含小写字母和 # 。 接下来 M 行,每行包括 K 个字母,表示第 i 个难以辨认的字母可能由这些字母代替。 保证 X 不超过能构造的单词数量。 输出格式 一行一个字符串,表示答案。 样例 input 5 2 3 4 c##nb std lws output cslnb 原问题可以转换成 \(k-1\)

统计单词数目的三种解法

强颜欢笑 提交于 2019-12-06 04:22:01
1 #include<cstdio> 2 using namespace std; 3 int main() 4 { 5 char s[101]; 6 int n = 1, count = 0; 7 gets(s); 8 for(int i = 0; i <= 100; i++) 9 { 10 if(s[i] == '\0') break; 11 if(s[i] == ' ') n = 1; 12 else 13 { 14 if(n == 1) 15 { 16 n = 0; 17 count++; 18 } 19 } 20 } 21 printf("%d", count); 22 return 0; 23 } 比较麻烦,emmm...但比较好理解 就是先扫一遍,判断 然后因为开头单词前面没有空格,所以要单独判断。。。 #include<cstdio> #include<cstring> using namespace std; int main() { char s[101]; int n = 1, count = 0; gets(s + 1); s[0] = ' ';//预处理,前面加空格。 for(int i=0; i<=100; i++) { if(s[i] != ' ' && s[i-1] == ' ') count++;//计数 } printf("%d", count)

7-1 词频统计 (30 分)

江枫思渺然 提交于 2019-12-06 03:45:15
7-1 词频统计 (30 分) 请编写程序,对一段英文文本,统计其中所有不同单词的个数,以及词频最大的前10%的单词。 所谓“单词”,是指由不超过80个单词字符组成的连续字符串,但长度超过15的单词将只截取保留前15个单词字符。而合法的“单词字符”为大小写字母、数字和下划线,其它字符均认为是单词分隔符。 输入格式: 输入给出一段非空文本,最后以符号#结尾。输入保证存在至少10个不同的单词。 输出格式: 在第一行中输出文本中所有不同单词的个数。注意“单词”不区分英文大小写,例如“PAT”和“pat”被认为是同一个单词。 随后按照词频递减的顺序,按照词频:单词的格式输出词频最大的前10%的单词。若有并列,则按递增字典序输出。 输入样例: This is a test. The word "this" is the word with the highest frequency. Longlonglonglongword should be cut off, so is considered as the same as longlonglonglonee. But this_8 is different than this, and this, and this...# this line should be ignored. 输出样例:(注意:虽然单词the也出现了4次

作业十二

偶尔善良 提交于 2019-12-06 03:28:04
一、实验目的: 利用C语言编制递归下降分析程序,并对简单语言进行语法分析。 编制一个递归下降分析程序,实现对词法分析程序所提供的单词序列的语法检查和结构分析。 二、实验原理 每个非终结符都对应一个子程序。 该子程序根据下一个输入符号(SELECT集)来确定按照哪一个产生式进行处理,再根据该产生式的右端: 每遇到一个终结符,则判断当前读入的单词是否与该终结符相匹配,若匹配,再读取下一个单词继续分析;不匹配,则进行出错处理 每遇到一个非终结符,则调用相应的子程序 三、实验要求说明 输入单词串,以“#”结束,如果是文法正确的句子,则输出成功信息,打印“success”,否则输出“error”,并指出语法错误的类型及位置。 例如: 输入begin a:=9;x:=2*3;b:=a+x end # 输出success 输入x:=a+b*c end # 输出‘end' error 四、实验步骤 1.待分析的语言的语法(参考P90) 2.将其改为文法表示,至少包含 –语句 –条件 –表达式 3. 消除其左递归 4. 提取公共左因子 5. SELECT集计算 6. LL(1)文法判断 7. 递归下降分析程序 #include<stdio.h> #include<string.h> #include<stdlib.h> char prog[]="begin a:=9;x:=2*3;b:=a+x