单词

力扣算法题—068文本左右对齐

被刻印的时光 ゝ 提交于 2020-03-16 06:34:04
给定一个单词数组和一个长度 maxWidth ,重新排版单词,使其成为每行恰好有 maxWidth 个字符,且左右两端对齐的文本。 你应该使用“贪心算法”来放置给定的单词;也就是说,尽可能多地往每行中放置单词。必要时可用空格 ' ' 填充,使得每行恰好有 maxWidth 个字符。 要求尽可能均匀分配单词间的空格数量。如果某一行单词间的空格不能均匀分配,则左侧放置的空格数要多于右侧的空格数。 文本的最后一行应为左对齐,且单词之间不插入额外的空格。 说明: 单词是指由非空格字符组成的字符序列。 每个单词的长度大于 0,小于等于 maxWidth 。 输入单词数组 words 至少包含一个单词。 示例: 输入: words = ["This", "is", "an", "example", "of", "text", "justification."] maxWidth = 16 输出: [ "This is an", "example of text", "justification. " ] 示例 2: 输入: words = ["What","must","be","acknowledgment","shall","be"] maxWidth = 16 输出: [ "What must be", "acknowledgment ", "shall be " ] 解释:

bzoj3940 censoring 题解(AC自动机)

断了今生、忘了曾经 提交于 2020-03-12 21:41:53
题目描述 Farmer John has purchased a subscription to Good Hooveskeeping magazine for his cows, so they have plenty of material to read while waiting around in the barn during milking sessions. Unfortunately, the latest issue contains a rather inappropriate article on how to cook the perfect steak, which FJ would rather his cows not see (clearly, the magazine is in need of better editorial oversight).FJ has taken all of the text from the magazine to create the string S of length at most 10^5 characters. He has a list of censored words t_1 ... t_N that he wishes to delete from S. To do so Farmer

LeetCode(68):文本左右对齐

拜拜、爱过 提交于 2020-03-12 07:06:44
Hard! 题目描述: 给定一个单词数组和一个长度 maxWidth ,重新排版单词,使其成为每行恰好有 maxWidth 个字符,且左右两端对齐的文本。 你应该使用“贪心算法”来放置给定的单词;也就是说,尽可能多地往每行中放置单词。必要时可用空格 ' ' 填充,使得每行恰好有 maxWidth 个字符。 要求尽可能均匀分配单词间的空格数量。如果某一行单词间的空格不能均匀分配,则左侧放置的空格数要多于右侧的空格数。 文本的最后一行应为左对齐,且单词之间不插入额外的空格。 说明: 单词是指由非空格字符组成的字符序列。 每个单词的长度大于 0,小于等于 maxWidth 。 输入单词数组 words 至少包含一个单词。 示例: 输入: words = ["This", "is", "an", "example", "of", "text", "justification."] maxWidth = 16 输出: [ "This is an", "example of text", "justification. " ] 示例 2: 输入: words = ["What","must","be","acknowledgment","shall","be"] maxWidth = 16 输出: [ "What must be", "acknowledgment ", "shall be "

python随堂练

岁酱吖の 提交于 2020-03-11 18:03:33
最后一个单词 题目内容:计算字符串最后一个单词的长度,单词以空格隔开。 可以使用以下语句实现字符串s的输入: 输入格式: s = str ( inpput ( ) ) 一行字符串,非空,长度小于5000。 输出格式: 整数N,最后一个单词的长度。 输入样例: hello world 输出样例: 5 时间限制:500ms内存限制:32000kb 思路 python输入的字符串中每个单词的前后可能会存在多个空格。 本题主要 通过 从后往前找 单词的方法,考虑以下几种情况   1)如果找到非空格的字符,flag标记为1,用k(初始值为0)统计单词的长度   2)如果找到的是空格字符,且flag 为 0,则continue跳出此次循环,继续查找   3)如果找到的是空格字符,且flag为1,则break结束整个循环。此时k的数值就是最后一个单词的长度。 关于python中循环语句的了解,请点击链接, python循环语句的用法 解题代码 s = str ( input ( ) ) #输入字符串 n = len ( s ) #测量字符串长度 k = 0 #统计最后一个单词的长度 flag = 0 #用于标记是否是最后一个单词(不包含空格) for i in range ( n - 1 , 0 , - 1 ) : if ( flag and s [ i ] == ' ' ) :

翻转单词顺序列 --剑指offer

守給你的承諾、 提交于 2020-03-10 17:08:35
题目描述 牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么? 思路: 先整体翻转 在逐个单词翻转 另外几种思路:1 逐个单词入栈 最后出栈 2 直接split分开单词 然后从后边拼接 3 第二个单词拼接到第一个单词前边 第三个在拼接到前边 public class Solution { public String ReverseSentence(String str) { if( str == null||str.trim().equals("")){ return str; } char[] chars = str.toCharArray(); int len=str.length(); reverse(chars,0,len-1); int f=0,l=0; while (l < len){ if(chars[l] == ' '){ reverse(chars,f,l-1); l ++; f = l; } if(chars[f] == ' '){ f ++; } if

剑指offer:翻转单词顺序列

爱⌒轻易说出口 提交于 2020-03-09 11:56:12
题目: 牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。 同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。 例如,“student. a am I”。 后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。 Cat对一一的翻转这些单词顺序可不在行,你能帮助他么? 源码: public class Solution { public String ReverseSentence(String str) { // 注意:可能出现str里只有空格的情况 // 判断去除空格后str的长度是否未为0 if (str == null || str.trim().length() == 0) { return str; } String[] str2 = str.split(" "); StringBuilder sb = new StringBuilder(); for (int i = str2.length - 1; i >= 0; i--) { sb.append(str2[i]); if (i != 0) { sb.append(" "); } } return sb.toString(); } } 来源: CSDN 作者: qq_45239139 链接: https:

1009 说反话

天涯浪子 提交于 2020-03-09 02:11:45
题目: 给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。 输入格式: 测试输入包含一个测试用例,在一行内给出总长度不超过 80 的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用 1 个空格分开,输入保证句子末尾没有多余的空格。 输出格式: 每个测试用例的输出占一行,输出倒序后的句子。 输入样例: Hello World Here I Come 输出样例: Come I Here World Hello # include <string> # include <iostream> # include <vector> using namespace std ; int main ( ) { string temp = "" ; string str ; vector < string > v ; getline ( cin , str ) ; for ( int i = 0 ; i < str . length ( ) ; i ++ ) { if ( str [ i ] == '\n' ) break ; if ( str [ i ] != ' ' ) temp + = str [ i ] ; else { v . push_back ( temp ) ; temp = "" ; } } v . push_back

前缀+词根+后缀

前提是你 提交于 2020-03-08 02:29:36
英语单词的构词规律也是有规可寻的。单词是由词素构成的,词素派生出词义。 单词的数量虽然浩瀚,但构成其的词素的数量却是有限的。 如果掌握了词素,懂得基本的构词方法,就能容易地识记单词,突破记忆单词这一难关。 词素又是由词根和词缀两部分组成的,而词缀又分为 前缀 和 后缀 。 常用的252个词根和289个词缀,掌握了这些词素便可掌握绝大部分英语词汇。 词根的定义是什么? 词根 是一个单词的根本部分,是"根儿",是单词的核心,表示一个单词的基本意义 。 单词的意义就是由词根的意义产生、转化来的。 比如: 词根 单词 vis看 --> visible 看得见的 log言 --> dialogue对话 flor花 --> florist种花者,花商 simil相同 --> assimilate同化 paci和平 --> pacific太平的,平静的 duc引导 --> introducer介绍人,引进者 我们看到,词根的意义代表了单词的中心意义,它在单词中占主导地位。词根加上前、后缀即产生了一个单词的意义。 所以,只要记住词根的意义,能从单词中辨认出词根的形体,面对一个新词你就基本能明白它的含义。比如你记住了vis看, 就能明白visible 是看得见的意思 同时一个词根还能派生出很多单词,充分显示了"根儿"的含义,比如下组单词都是由"vis"派生出来的 词根 单词 visible 看得见的

nlp-tutorial代码注释1-1,语言模型、n-gram简介

浪子不回头ぞ 提交于 2020-03-07 10:23:52
本文知识点介绍来自斯坦福大学CS224N课程lecture6语言模型部分 语言模型 语言模型可以预测一个序列接下来会出现什么词。即给定一个单词序列,语言模型计算出下一个单词是词汇表中各个词的概率分布。 还有一种理解是语言模型可以计算一个句子出现的概率,计算公式如下(条件概率): n-gram语言模型: 含义:通过前(n-1)个词去预测某个单词。 n-gram有一个基本的假设:假设某个词的出现仅取决于它前面的n-1个单词。根据条件概率公式,某个词的出现概率计算公式为: 计算上图n-gram和(n-1)-gram的比例是通过计算他们在大型语料库中出现的次数的比例: 举个例子:As the proctor started the clock, the students open their ___. 预测这句话空格处的词,假设这里是一个4-gram的语言模型。那么就是通过前三个词:students open their去预测下一个词,语料库中students open their books出现的次数最多,故4-gram模型预测的空格处的词就应该是books。 然而回顾整个句子,前文出现了proctor,所以这个空是exams的概率应该最大,而4-gram模型只考虑前三个词,忽略了前面的词proctor,故导致预测错误。 n-gram语言模型的一个缺点:每次预测时只考虑前n-1个词

425. 单词方块

折月煮酒 提交于 2020-03-06 20:32:33
题目: 给定一个单词集合 (没有重复),找出其中所有的 单词方块 。 一个单词序列形成了一个有效的单词方块的意思是指从第 k 行和第 k 列 (0 ≤ k < max(行数, 列数)) 来看都是相同的字符串。 例如,单词序列 ["ball","area","lead","lady"] 形成了一个单词方块,因为每个单词从水平方向看和从竖直方向看都是相同的。 b a l l a r e a l e a d l a d y 注意: 单词个数大于等于 1 且不超过 500。 所有的单词长度都相同。 单词长度大于等于 1 且不超过 5。 每个单词只包含小写英文字母 a-z。 示例 1: 输入: ["area","lead","wall","lady","ball"] 输出: [ [ "wall", "area", "lead", "lady" ], [ "ball", "area", "lead", "lady" ] ] 解释: 输出包含两个单词方块,输出的顺序不重要,只需要保证每个单词方块内的单词顺序正确即可。 示例 2: 输入: ["abat","baba","atan","atal"] 输出: [ [ "baba", "abat", "baba", "atan" ], [ "baba", "abat", "baba", "atal" ] ] 解释: 输出包含两个单词方块