单词

蓝桥杯--枚举--最长单词

大城市里の小女人 提交于 2020-01-07 14:51:09
编写一个函数,输入一行字符,将此字符串中最长的单词输出。   输入仅一行,多个单词,每个单词间用一个空格隔开。单词仅由小写字母组成。所有单词的长度和不超过100000。如有多个最长单词,输出最先出现的。 样例输入 I am a student 样例输出 student  这道题的参考价值是输入一串字符串怎么处理 # include <iostream> # include <string.h> using namespace std ; int main ( ) { char a [ 100000 ] ; int j ; int t ; int c ; int max = 0 ; int i = 0 ; int k = 0 ; j = 0 ; gets ( a ) ; //printf("%s",a); k = strlen ( a ) ; //cout<<k; for ( i = 0 ; i < k ; i ++ ) { if ( a [ i ] == ' ' || i == k - 1 ) { c = i - j ; j = i + 1 ; if ( c > max ) { max = c ; t = i ; } } } for ( int x = t - max ; x <= t ; x ++ ) { cout << a [ x ] ; } cout << endl ;

LeetCode--139--单词拆分(python)

你。 提交于 2020-01-06 09:07:33
给定一个非空字符串 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 class Solution: 2 def wordBreak(self, s: str, wordDict: List[str]) -> bool: 3 dp = [False for _ in range(len(s)+1)] 4 dp[0]=True 5 for i in range(1,len(s)+1

Leetcode139. Word Break单词拆分

邮差的信 提交于 2020-01-06 09:07:20
给定一个非空字符串 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 dp[i]表示长为i的从s的第一个字符开始的字串是否能匹配。 可以想为长度为i是否匹配需要看长度i - j是否匹配和是否有长度为j且合适正确的单词。 这样就形成了动态规划的公式。 class Solution { public: bool wordBreak(string s, vector<string>&

词法分析096

瘦欲@ 提交于 2020-01-05 01:26:45
1. 输入:所给文法的源程序字符串,按照构词规则分解成一系列单词符号。单词是语言中具有独立意义的最小单位,包括关键字、标识符、运算符、界符和常量等 输出:二元组 (单词种别,单词符号的属性值)构成的序列。 2. 3. <整数常数>→d|d<整数常数> <标识符>→L|L<字母数字> <关键字>→ if | then | while | do |<字母>  <运算符>→ + | - | * | / | = | =<等号>… <界符>→ , | ; | ( | ) | … 比如: S代表a^n , n>=0 S→a|Aa A→a 4. #include<stdio.h> #include<string.h> #include<iostream.h> char prog[80],token[8]; char ch; int syn,p,m=0,n,row,sum=0; char *rwtab[6]={"begin","if","then","while","do","end"}; void scaner() { for(n=0;n<8;n++) token[n]=NULL; ch=prog[p++]; while(ch==' ') { ch=prog[p]; p++; } if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z')) { m=0; while(

atitit.词法分析原理 词法分析器 (Lexer)

家住魔仙堡 提交于 2020-01-05 00:46:58
atitit. 词法分析 原理 词法分析器 (Lexer) 1 . 词法分析 (英语: lexical analysis ) 1 2 . ;实现词法分析程序的常用途径 : 自动生成 , 手工生成 . [1] 2 2 .1. 词法分析程序的功能 2 2 .2. 如何描述词素 3 2 .3. 单词 token 3 2 .4. Token 的类型 ,根据程序设计语言的特点,单词可以分为五类:关键字、标识符、常量、运算符、界符。以 4 2 .5. 词法分析 的第一阶段即扫描器 4 2 .6. 词法分析 的第 二 阶段 评估器( Evaluator ) 5 2 .7. 例如 C语言程序段的词法分析结果 5 2 .8. 最长原则 6 2 .9. 词法单元的识别 6 2 .10. 不确定 ” ( Nondeterministic Finite Automata ,NFA 8 2 .11. 转换图(transition graph)的表示 9 2 .12. 词法分析 (3)---DFA 10 2 .13. 为什么要 NFA 转 DFA 12 2 .14. 则表达式转 NFA 13 2 .15. 正则表达式如何转换为NFA呢?有几个公式 (MLS2007[1]): 13 2 .16. 构造词法分析器了。大致的流程如下: 19 2 .17. 常用的 token scanner 19 2 .18.

词法分析器与正规式

大城市里の小女人 提交于 2020-01-04 23:54:21
词法分析器 词法分析器是一个程序,它的任务是从源程序中提取单词。比如从源程序中提取出保留字,标识符,常数,运算符等单词符号。 词法分析器的结果是输出单词(token),通常是二元式(单词种别,单词自身的值)。 单词种别的划分,是如何设计编译器层面上的事情。可以将所有的保留字视为一种,也可以将每个保留字都视为一种。不过通常是将每种单词视为一个整数码,这样方便处理。 单词自身的值,如果一个单词种别只包含一个单词, 那么其种别编码就是其自身的值。 对于标识符和,其在符号表的入口指针作为它自身的值。 状态转换图 状态转换图对于单词的识别是可行的。只要构造出相应语言的单词的状态转换图,那么单词的识别是非常容易的。 正规式 可以将状态转换图的概念加以形式化,那么就是正规式。正规式用数学语言描述了状态转换图。可以用程序对正规式构造相应的状态转换图。 那么只要将状态图加以形式化,那么就可以自动生成词法分析器。 来源: https://www.cnblogs.com/beMaster/p/5066373.html

BPE(Byte Pair Encoding)算法

孤街醉人 提交于 2020-01-04 00:55:02
BPE算法,最早应用于NLP任务出现于《 Neural Machine Translation of Rare Words with Subword Units 》这篇文章,是一种解决NMT任务中,出现OOV(out-of-vocabulary)的方法。在NMT任务中,如果出现OOV问题,最常见的就是back off to a dictionary。这篇文章使用了BPE算法后,不用退回到字典前就可以继续NMT任务。 BPE是一种压缩算法,是一种自下而上的算法。将单词作为单词片段处理(word pieces),以便于处理未出现单词。在NMT任务中,先将训练集单词划分成片段(利用BPE),然后将片段随机赋值后放到RNNs或CNNs中训练出片段的embedding,再将片段组合得出word的embedding后,进行NMT工作。这样如果在训练集或者其他情况中,遇到生僻词或者未登录词时,直接利用片段进行组合来进行NMT任务。 BPE算法基本过程如下: (1)首先将统计text中单词,做成词汇表(单词-频率),然后按照unigram进行分解。 5 l o w 2 l o w e r 6 n e w e s t 3 w i d e s t 词汇表:l, o, w, e, r, n, w, s, t, i, d, (2)寻找频率最大的片段(字符),进行组合,将组合片段加入词汇表。 5 l o w

大龄屌丝自学笔记--Java零基础到菜鸟--005

若如初见. 提交于 2020-01-03 01:37:33
关键字,标识符,注释,常量 1、关键字 Java语言具有特定含义的单词,字母全部小写,如:class、public、static、void...... 2、标识符 给接口、类、方法、变量起的名字,如:Fin、main ...... 组成规则:英文字母、数字、$、_ ...... 注意事项:不能以数字开头,不能使用关键字,英文字母区分大小写 命名规则:包:小写字母组成,多级包上下级间加 “.” ,如:liverpool(单级包)、liverpool.gerrard(多级包) ......      接口:大写字母 “I” 加每个单词首字母大写,如:IFin、ILiverpoolGerrard ......      类: 每个单词首字母大写,如:Fin、LiverpoolGerrard ......       方法:第一个单词首字母小写,其余单词首字母大写,如:main、liverpoolGerrard ......      变量:第一个单词首字母小写,其余单词首字母大写,如:liverpool、liverpoolGerrard ......      常量:所有字母大写,单词之间用 “_” 隔开,如:LIVERPOOL、LIVERPOOL_GERRARD ...... 3、注释 单行注释:// 多行注释:/* ...... */ 文档注释:/** ...... */ 4、常量