单词

7-32 说反话-加强版 (20分)

我们两清 提交于 2020-03-01 07:09:41
给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。 输入格式: 测试输入包含一个测试用例,在一行内给出总长度不超过500 000的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用若干个空格分开。 输出格式: 每个测试用例的输出占一行,输出倒序后的句子,并且保证单词间只有1个空格。 输入样例: Hello World Here I Come 输出样例: Come I Here World Hello / 思路:首先找出字符串开头的位置(有可能开头有空格),然后从字符串的尾部开始遍历字符串,当第一次遇到一个空格(可能会遇到两个连续的空格),则输出从这个空格到上一个空格中间的字符串 / 实现代码如下: # include <stdio.h> # include <string.h> int main ( ) { char s [ 500000 ] ; int i , j , k , cot = 0 ; scanf ( "%[^\n]" , & s ) ; int len = strlen ( s ) ; for ( i = 0 ; i < len ; i ++ ) if ( s [ i ] != ' ' ) { k = i ; break ; //找到开头的位置后停止遍历 } for ( i = len - 1 ; i > k

URAL题解一

寵の児 提交于 2020-02-29 12:41:34
URAL题解一 URAL 1002 题目描述 :一种记住手机号的方法就是将字母与数字对应,如图。这样就可以只记住一些单词,而不用记住数字。给出一个数字串和n个单词,用最少的单词数来代替数字串,输出对应的任一方案。 solution 首先想到的应该是 DP ,接着就是状态转移的问题,也就是预处理出每个单词可以与哪一段的数字对应,分析时间复杂度,发现直接暴力判断是可以的,但用 HASH 会好一些,还可以用 KMP 。 时间复杂度: \(O(单词数*数字长度)或O(单词长度*数字长度)\) URAL 1010 题目描述 :有一个离散函数,它的定义域为整数 \([1, n]\) ,现在在函数图象中找两个点,使得这两个点之间的点都在这两个点的连线的下方,求出连线倾斜度最大的方案(两个点,编号小的在前),有多个方案时输出第一个点编号最小的方案。 solution 首先考虑比较特殊的方案:相邻的两个点。相邻的两个点肯定是可行的。然后考虑两点之间有点的可行方案。 由上图可知,与选取的两点 \((i, j)\) 相邻的点必定有一个点与i或j相连的直线的倾角比 \((i, j)\) 所成的直线的倾角要大,所以中间有点的方案不是最优方案,所以答案就是相邻的点形成的直线的倾角最大的方案。 时间复杂度: \(O(n)\) URAL 1011 题目描述 :有 \(n\) 个人,其中有 \(m\) 个是乘务员

Leetcode 68.文本左右对齐

微笑、不失礼 提交于 2020-02-29 08:33:35
文本左右对齐 给定一个单词数组和一个长度 maxWidth ,重新排版单词,使其成为每行恰好有 maxWidth 个字符,且左右两端对齐的文本。 你应该使用"贪心算法"来放置给定的单词;也就是说,尽可能多地往每行中放置单词。必要时可用空格 ' ' 填充,使得每行恰好有 maxWidth 个字符。 要求尽可能均匀分配单词间的空格数量。如果某一行单词间的空格不能均匀分配,则左侧放置的空格数要多于右侧的空格数。 文本的最后一行应为左对齐,且单词之间不插入 额外的 空格。 说明: 单词是指由非空格字符组成的字符序列。 每个单词的长度大于 0,小于等于 maxWidth 。 输入单词数组 words 至少包含一个单词。 示例: 输入: words = ["This", "is", "an", "example", "of", "text", "justification."] maxWidth = 16 输出: [ "This is an", "example of text", "justification. " ] 1 import java.util.*; 2 3 public class Solution { 4 public ArrayList<String> fullJustify(String[] words, int maxWidth) { 5 ArrayList

面试题 58.1:翻转单词顺序列

别来无恙 提交于 2020-02-29 00:26:45
题目描述 牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么? 思路 先把句子中的所有字符进行翻转,再翻转每个单词中字符的顺序。 翻转每个单词时,添加两个指针,分别指向单词的第一个字符和单词的最后一个字符。 当第一个指针指向空格时,两个指针都前进一步。 否则判断第二个指针是是否到单词的最后一个字符了,到了则翻转,之后将两个指针分别前进一步指向空格。 否则说明还没到单词结尾,第二个指针继续前进一步。 这里第二个指针判断时需要注意索引越界以及是否已到结尾。 代码 public class Solution { public String ReverseSentence(String str) { if (str == null || str.length() == 0) { return ""; } // 如果就是一个单词,不是句子 if (!str.contains("")) { return str; } char[] charArray = str.toCharArray(

字符串排序之单词首字母

淺唱寂寞╮ 提交于 2020-02-29 00:00:42
要求:首先输入一个整数表示单词个数,再随机输入几个英文单词,根据单词首字母在字典中的递增顺序进行排序输出,单词间以空格隔开 样例: 输入: 4     apple banana test happy 输出:apple    banana    happy    test 程序如下: public class Sort { public static void main ( String [ ] args ) { // TODO Auto-generated method stub Scanner scanner = new Scanner ( System . in ) ; String flag = scanner . nextLine ( ) ; String string = scanner . nextLine ( ) ; String str [ ] = string . split ( " " ) ; String temp ; for ( int i = 0 ; i < str . length - 1 ; i ++ ) { for ( int j = 0 ; j < str . length - i - 1 ; j ++ ) { if ( str [ j + 1 ] . compareTo ( str [ j ] ) < 0 ) { temp = str [ j ]

背单词APP调研分析

我们两清 提交于 2020-02-28 07:36:35
前言:随着我国网络经济重心向移动端的转移,移动教育领域获得的关注度在持续放大。互联网的发展和移动设备的普及,我们开始在移动设备上学习,各种学习教育软件如雨后春笋,越来越多,就背单词软件来说,在网上随便一搜:百词斩、扇贝单词、有道背单词、知米、乐词……等等琳琅满目,各有特色。手机上下载这些APP之后,我们便可以利用碎片化的时间进行学习,而不必时刻抱着一本厚厚的单词书,不必每次打开单词书总是abandon,这些软件会根据我们的水平和需求提供相应的单词的练习。 1、下面是我对百词斩、扇贝单词、有道背单词三款背单词APP的一些介绍和对比分析: APP 百词斩 扇贝单词 有道背单词 特色 可以离线使用,0流量背单词 可以和小伙伴一起学英语背单词 有道考神团队与郎文当代高级英语词典内容强强合璧 基本内容 最全词表、图背单词、个性词包、地道英语、九种复习模式、单词锁屏、圈子、PK系统、词汇量测试、单词电台/TV、每日提醒、全方位服务 海量词库、跨界英语、专业词根、启发式学习、离线学习、论坛小组、每日打卡、每日一句 单词记忆法、英语单词库、背单词词单、有道词典单词本、背单词计划、背单词打卡、趣味背单词 用户群 考试考级的在校学生以及想要出国的人 考试考级的在校学生、想要出国的人、提升专业英语水平的职场人士 考试考级的在校学生以及想要出国的人 发行商 成都超有爱科技有限公司 南京贝湾教育科技有限公司

hdu3460(字典树)

别来无恙 提交于 2020-02-28 04:36:42
http://acm.hdu.edu.cn/showproblem.php?pid=3460 题意:一开始没有明白题意,看了好久,才明白,原来它是将一个单词打印出来后再在打印机里面删除字母,也就是说,如果单词前缀相同,则只需删除单词不相同的部分,再插入下一个单词不相同的部分。这样的话,可以用字典树,要是单词前缀相同,则在字典树上只有一个结点,那么,要是将最长的那个单词也删除了,则是对字典树上的结点插入一次再删除一次,还要输出n次,也就是2*numnode+n;但是最长的那个单词len不需要删除,则是2*numnode+n-len; #include<iostream> #include<cstring> using namespace std; typedef struct tree { int num; tree *next[26]; }tree; tree *root; int count; void creat(char str[]) { int len=strlen(str); tree *p=root,*q; for(int i=0;i<len;i++) { int x=str[i]-'a'; if(p->next[x]) { p->next[x]->num++; p=p->next[x]; } else { q=(tree *)malloc(sizeof(tree));

08.JS单词整理

眉间皱痕 提交于 2020-02-27 17:29:52
以下为按照文章顺序简单整理的JS单词, 注意:是JS单词注释,部分与英文不符 01.JS语法规范、变量与常量 console——控制台 log——日志 var——变量 variable变量,变化 const——常量 constant常数,不断的 02.JS数据类型与数据类型转换 datatype——数据类型 Number数值型 parseInt——整型 parseFloat——浮点型 string——字符串型 boolean——布尔型 undefined——未定义型,未找到 null——空 datatype transform——数据类型转换 true——真 false——假 toString——转为字符串型 typeof——查询数据类型 bin——二进制 03.JS运算符 compare——比较 logic——逻辑 Unicode——统一字符编码 04.JS逻辑结构 logic——逻辑 if—else语句 switch—case循环 while循环 do-while循环 break——打破循环 for循环 continue跳过循环 nest——嵌套 05.JS函数 function——功能/函数 function-param——函数带参数 function-return——函数带返回值 scope——作用域,范围 callback——回调函数 global——全局 06.JS对象

LeetCode All in One 题目讲解汇总(持续更新中...)

本秂侑毒 提交于 2020-02-27 13:50:31
Given string S and a dictionary of words words , find the number of words[i] that is a subsequence of S . Example : Input: S = "abcde" words = ["a", "bb", "acd", "ace"] Output: 3 Explanation: There are three words in words that are a subsequence of S: "a", "acd", "ace". Note: All words in words and S will only consists of lowercase letters. The length of S will be in the range of [1, 50000] . The length of words will be in the range of [1, 5000] . The length of words[i] will be in the range of [1, 50] . 这道题给了我们一个字符串S,又给了一个单词数组,问我们数组有多少个单词是字符串S的子序列。注意这里是子序列,而不是子串,子序列并不需要连续。那么只要我们知道如何验证一个子序列的方法

「脚本」词频统计 & 有效电话号码

微笑、不失礼 提交于 2020-02-27 08:41:18
00192 词频统计 题目描述 写一个 bash 脚本以统计一个文本文件 words.txt 中每个单词出现的频率。 为了简单起见,你可以假设: words.txt只包括小写字母和 ' ' 。 每个单词只由小写字母组成。 单词间由一个或多个空格字符分隔。 示例: 假设 words.txt 内容如下: the day is sunny the the the sunny is is 你的脚本应当输出(以词频降序排列): the 4 is 3 sunny 2 day 1 说明 : 不要担心词频相同的单词的排序问题,每个单词出现的频率都是唯一的。 你可以使用一行 Unix pipes 实现吗? 力扣地址 https://leetcode.com/problems/word-frequency/ https://leetcode-cn.com/problems/word-frequency/ <!-- more --> 解题报告 先将字符串按照空格切分成行. [root@localhost ~ ]$ cat words.txt | tr ' ' '\n' the day is sunny the the the sunny is is 结果按照字符串顺序排序,将相同的单词聚合到一起 [root@localhost ~ ]$ cat words.txt | tr ' ' '\n' |