首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

程序员进阶之算法练习(三十六)贪心

3.Beautiful Lyrics 题目链接 题目大意: 一段悦耳歌词有两行,每行有两个单词,并且要求: 1、第一行一个单词元音数量,和第二行第一个单词相同; 2、第一行第二个单词元音数量...,和第二行第二个单词相同; 3、第一行第二个单词最后一个元音,和第二行第二个单词相同。...而歌词要求,可以表述为: 1、从相同长度字符串,取出结尾相同两个单词,作为第1、2行第二个单词; 2、从相同长度字符串,取出长度相同两个单词,作为第1、2行一个单词; 从这里,我们可以得到一个贪心策略...: a.先两个两个取出所有长度相同并且元音结尾相同单词,得到x组,这是可能最大歌词数量; b.从剩下所有单词,两两取出所有长度相同单词,得到y组,ans=min(x, y)组; 如果x...综合上面的考虑,我们可以将n/2向左延伸,直到找到一个不为零数字,作为分割点; 同样,将(n+1)/2向右延伸,知道找到一个不为零数字,作为分割点。 然后从上面的两个可能,选择一个最小值。

60250

一道算法小题分析过程

简单解析下规则:当一个单词以辅音字母开头,将辅音字母移到最后,并添加 ay 比如 california → aliforniacay : c 移动到最后然后添加 ay paragraphs → aragraphspay...:p 移动到最后然后添加 ay glove → oveglay:gl 移动到最后然后添加 ay ⚠️ 这里是找到第一个元音字母之前所有辅音字母 元音字母: a、e、i、o、u 当单词元音字母开头时候直接在单词后面添加...way 比如 algorithm → algorithmway : a 是元音字母所以在单词添加 way eight → eightway : e 是元音字母所以在单词添加 way 题目分析完了,我们还需要通过阅读测试用例来检查是否有遗漏...这个规则其实满足第一种情况,当找不到元音时候,直接在后面加 ay 分析过程 当我们拿到一道算法题目的时候,按照几个套路来「攻城」 算法分类,这道题是字符串题,对于字符串操作无非有两种: 按索引遍历...+ 'ay' // 单词没有元音 renturn STR + ay 复制代码 分析过程有了我们可以写JavaScript代码了 function translatePigLatin(str)

1K00
您找到你想要的搜索结果了吗?
是的
没有找到

元音拼写检查器(哈希)

题目 在给定单词列表 wordlist 情况下,我们希望实现一个拼写检查器,将查询单词转换为正确单词。...:如果在将查询单词元音(‘a’、‘e’、‘i’、‘o’、‘u’)分别替换为任何元音,能与单词列表单词匹配(不区分大小写),则返回正确单词单词列表匹配项大小写相同。...当查询匹配到大小写问题单词时,您应该返回单词列表一个这样匹配项。 当查询匹配到元音错误单词时,您应该返回单词列表一个这样匹配项。...如果该查询在单词列表没有匹配项,则应返回空字符串。...(wordlist.begin(), wordlist.end()); //转成小写单词 ---- 第一个出现原始词 unordered_map

52720

(待整理完)正则表达式30分钟入门教程

这几乎是最简单正则表达式了,它可以精确匹配这样字符串:由两个字符组成,前一个字符是h,一个是i。...虽然通常英文单词是由空格,标点符号或者换行来分隔,但是\b并不匹配这些单词分隔字符任何一个,它只匹配一个位置。 假如你要找是hi后面不远处跟着一个Lucy,你应该用\bhi\b....比如下面这个例子: 0\d\d-\d\d\d\d\d\d\d\d匹配这样字符串:以0开头,然后是两个数字,然后是一个连字号“-”,最后是8个数字(也就是中国电话号码。...很简单,你只需要在方括号里列出它们就行了,像[aeiou]就匹配任何一个英文元音字母,[.?!]匹配标点符号(.或?或!)。...,然后是一个0,后面跟着2个数字(\d{2}),然后是)或-或空格一个,它出现1次或不出现(?),最后是8个数字(\d{8})。

62730

Strings, Numbers, Math 1-10

找到第一个不重复字符问题:找到字符串一个不重复字符。思路:第一次遍历使用HashMap进行计数,第二次遍历找到第一个出现次数为1字符。...翻转字符串每个单词问题:字符串中有多个空格分割多个单词,翻转每个单词,删掉单词多余空格。思路:将字符串切割成多个单词,然后挨个翻转,最后用空格连接所有单词。...对英文字符串元音辅音进行计数问题:统计字符串元音(a, e, i, o, u)和辅音数量。思路:使用partitionBy方法切分元音和辅音并计数。...移除字符串空白字符问题:去掉字符串空白字符。思路:使用内置replaceAll方法和正则表达式\s。...生成字符串全排列问题:生成字符串字符全排列,返回全排列流。思路:使用递归。

48700

这可能是迄今为止最好一篇正则入门教程-上

这几乎是最简单正则表达式了,它可以精确匹配这样字符串:由两个字符组成,前一个字符是h,一个是i。...虽然通常英文单词是由空格,标点符号或者换行来分隔,但是 \b 并不匹配这些单词分隔字符任何一个,它只匹配一个位置。 假如你要找是hi后面不远处跟着一个Lucy,你应该用 \bhi\b....“测试指定字符串是否匹配一个正则表达式”方法,JavaScript里RegExp.test()方法或.NET里Regex.IsMatch()方法。...(或整个字符串一个单词,具体匹配哪个意思得看选项设置) 字符类 要想查找数字,字母或数字,空白是很简单,因为已经有了对应这些字符集合元字符,但是如果你想匹配没有预定义元字符字符集合(比如元音字母...很简单,你只需要在方括号里列出它们就行了,像[aeiou]就匹配任何一个英文元音字母,[.?!]匹配标点符号(.或?或!)。

92510

LeetCode面试系列 第9天:No.345 – 反转字符串元音字母

上一篇 LeetCode 面试题中,我们分析了一道相对轻松字符串面试题 - 最后一个单词长度。今天,我们接着来看另一道字符串算法题吧。...反转字符串元音字母 https://leetcode-cn.com/problems/reverse-vowels-of-a-string 题目描述 编写一个函数,以字符串作为输入,反转该字符串元音字母...://leetcode-cn.com/tag/string 相似题目 反转字符串 https://leetcode-cn.com/problems/reverse-string 难度: 简单 删去字符串元音...具体操作如下: 将原字符串遍历一次,取出其中元音字母放进一个 list (比如,变量名用 vList) 调用函数 reverse() 将 vList 进行反转,得到反转 vList 重新遍历原字符串...,遇到非元音字母直接输出;遇到元音字母,则从已反转 vList 取出需要元音字母。

48920

leetcode之山羊拉丁文

序 本文主要记录一下leetcode之山羊拉丁文 leetcode-online-judge.jpg 题目 给定一个由空格分割单词句子 S。每个单词只包含大写或小写字母。...山羊拉丁文规则如下: 如果单词元音开头(a, e, i, o, u),在单词添加"ma"。 例如,单词"apple"变为"applema"。...如果单词以辅音字母开头(即非元音字母),移除第一个字符并将它放到末尾,之后再添加"ma"。 例如,单词"goat"变为"oatgma"。...根据单词在句子索引,在单词最后添加与索引相同数量字母'a',索引从1开始。 例如,在第一个单词添加"a",在第二个单词添加"aa",以此类推。 返回将 S 转换为山羊拉丁文句子。...,然后遍历每个单词,判断首字母是否为元音,是的话在后面添加ma,不是的话将首字母移到后面再拼接ma,最后再根据单词在句子index拼接指定个数a。

72400

leetcode-824-Goat Latin(字符串处理)

要完成函数: string toGoatLatin(string S)  说明: 1、这道题给定一个字符串S,里面包含单词,大小写敏感,单词之间以空格隔开,要求把英文转化为“goat latin”...,规则如下: 如果单词元音字母a/e/i/o/u以及它们大写形式开头,那么在单词最后面加“ma”。...如果单词不以元音字母开头,那么把单词首字母放到最后面,再在单词最后面加“ma”。 第一个单词最后再加“a”,第二个单词最后再加“aa”,第三个单词最后再加“aaa”,依此类推。...,子字符串 if(set1.count(word[0])==0)//首字母非元音 { word=word.substr...;k++) word=word+'a'; } res=res+word+' ';//每个单词存储在字符串

82770

leetcode-824-Goat Latin(字符串处理)

要完成函数: string toGoatLatin(string S)  说明: 1、这道题给定一个字符串S,里面包含单词,大小写敏感,单词之间以空格隔开,要求把英文转化为“goat latin”...,规则如下: 如果单词元音字母a/e/i/o/u以及它们大写形式开头,那么在单词最后面加“ma”。...如果单词不以元音字母开头,那么把单词首字母放到最后面,再在单词最后面加“ma”。 第一个单词最后再加“a”,第二个单词最后再加“aa”,第三个单词最后再加“aaa”,依此类推。...,子字符串 if(set1.count(word[0])==0)//首字母非元音 { word=word.substr...;k++) word=word+'a'; } res=res+word+' ';//每个单词存储在字符串

39720

音位:不仅仅是词汇获取

传统语言学理论认为,单词在长期记忆中被表示为音位序列,即由抽象、离散符号单位,与单个音段大小相同(辅音或元音(但与它们不完全相同))符号按照一定序列组织形成。...这个例子说明了,音位可以通过不同语音形式来实现,这取决于它在音节或单词位置、邻近声音、音素是否出现在重读音节或非重读音节,以及其他因素。...b.音位获取码模型,其中词汇表征通过音位获取,音位表征激活在词汇表征检索。...因此,在评价Massaro反对音位理论论据时,要考虑一个关键问题是,是否有任何独立证据表明语音存在自上而下知觉学习限制。...如果把“单词”替换为“语素”,上面的观点可以扩展到非常广泛语言。 语素是语音形式和概念之间最小配对。单词是独立语素或语素组合(government由govern和-ment组成)。

1.1K10

字符串之正则表达式

当然,代价就是更复杂,比如你可以编写一个正则表达式,用来查找所有以 0 开头,后面跟着 2-3 个数字,然后是一个连字号 “-” ,最后是 7 或 8 位数字字符串(像 011-12345678 或...这几乎是最简单正则表达式了,它可以精确匹配这样字符串:由两个字符组成,前一个字符是 m, 一个是 e。...虽然通常英文单词是由空格,标点符号或者换行来分隔,但是 \b 并不匹配这些单词分隔字符任何一个,它只匹配一个位置。...*\bjames\b意思就很明显了:先是一个单词 me 然后是任意个任意字符(但不能是换行),最后是 james 这个单词。...很简单,你只需要在方括号里列出它们就行了,像 [aeiou] 就匹配任何一个英文元音字母, [.?!] 匹配标点符号( . 或 ? 或 !)。

3.2K20

【算法千题案例】每日LeetCode打卡——99.山羊拉丁文

前言 原题样例:山羊拉丁文 C#方法:遍历 Java 方法:字符串 总结 ---- 前言 算法题 每天打卡一道算法题,既是一个学习过程,又是一个分享过程 提示:本专栏解题 编程语言一律使用 C#...山羊拉丁文规则如下: 如果单词元音开头(a, e, i, o, u),在单词添加"ma"。 例如,单词"apple"变为"applema"。...如果单词以辅音字母开头(即非元音字母),移除第一个字符并将它放到末尾,之后再添加"ma"。 例如,单词"goat"变为"oatgma"。...根据单词在句子索引,在单词最后添加与索引相同数量字母’a’,索引从1开始。 例如,在第一个单词添加"a",在第二个单词添加"aa",以此类推。 返回将 S 转换为山羊拉丁文句子。...100.00%用户 内存消耗:45.9 MB,在所有 C# 提交击败了43.90%用户 ---- Java 方法:字符串 思路解析 对于句子每个 word,如果是元音字母,就不变;如果是辅音字母

42420

程序员必备50道数据结构和算法面试题

我在面试中经常看到主题区域是数组、链表、字符串、二叉树,以及源于算法问题(例如字符串算法,排序算法, quicksort 或基数排序,以及其他杂项),这就是你能在这篇文章中找到主要内容。...我们无法保证你会被问及这些编程或数据结构和算法问题,但它们会让你充分了解在实际编程工作面试可预期各类问题。 一旦你知道了这些问题,你应该有足够信心参加任何电话或面对面的面试。...链表有几种不同形式。首先是单向链表,在这个结构你只能向一个方向遍历(向前或者反转);其次是双向链表,你可以双向遍历(向前或者向后);最后是环形链表,组成一个形式。...6、如何在字符串中找到重复字符? 7、如何对给定字符串元音及辅音进行计数? 8、如何计算给定字符传中特定字符出现次数? 9、如何找到一个字符串全排列?...10、在不使用任何库方法情况下如何反转给定语句中单词? 11、如何判断两个字符串是否互为旋转? 12、如何判断给定字符串是否是回文?

3.2K11

程序员必备50道数据结构和算法面试题

我在面试中经常看到主题区域是数组、链表、字符串、二叉树,以及源于算法问题(例如字符串算法,排序算法, quicksort 或基数排序,以及其他杂项),这就是你能在这篇文章中找到主要内容。...我们无法保证你会被问及这些编程或数据结构和算法问题,但它们会让你充分了解在实际编程工作面试可预期各类问题。 一旦你知道了这些问题,你应该有足够信心参加任何电话或面对面的面试。...链表有几种不同形式。首先是单向链表,在这个结构你只能向一个方向遍历(向前或者反转);其次是双向链表,你可以双向遍历(向前或者向后);最后是环形链表,组成一个形式。...6、如何在字符串中找到重复字符? 7、如何对给定字符串元音及辅音进行计数? 8、如何计算给定字符传中特定字符出现次数? 9、如何找到一个字符串全排列?...10、在不使用任何库方法情况下如何反转给定语句中单词? 11、如何判断两个字符串是否互为旋转? 12、如何判断给定字符串是否是回文?

4.2K20

【刷题】统计每个元音字母在字符串中出现次数【2】

【刷题】统计每个元音字母在字符串中出现次数【2】 一、题目 1.题目描述 二、解题报告 1.思路分析 2.代码详解 3.注意事项C++ 一、题目 1.题目描述 题目:统计每个元音字母在字符串中出现次数...输入:输入数据首先包括一个整数n,表示测试实例个数,然后是n行长度不超过100字符串 输出: 示例 : 二、解题报告 1.思路分析 循环进行通过switch匹配计数 2.代码详解...这里如果还用scanf输入,它会读完一个单词就进行后面的循环计数,不ok。...注意对于输入完样例次数那个回车,gets会将它作为输入,所以要多加一个gets吸收这个回车 字符串初始化char s[1000] 判断句子结束用 最后一个字符=‘\0’ 输出格式 之前多次测试实例有一个空行隔开...【需要两个\n】,最后一次没有空行【只是一个\n】 switch里面的break记得加

87420

笔记·正则表达式和re库

提示:本页面转载内容过多,所使用参考资料全部放在最后一章 本页面的内容不会获得任何收益,同样本页面的内容也不会发送到任何第三方平台中,White_mu收集此页面的内容仅仅是便于自己学习,如果这触碰了您利益...例如,下面的表达式匹配单词 Chapter 字符串 ter,因为它出现在字边界前面: /ter\b/ 下面的表达式匹配 Chapter 字符串 apt,但不匹配 aptitude 字符串...要建立一个表示所有元音字符字符簇,就把所有的元音字符放在一个方括号里: [AaEeIiOoUu] 这个模式与任何元音字符匹配,但只能表示一个字符。...模式”.”可以匹配任何字符串,除了空串和只包括一个”新行”字符串。 确定重复出现 到现在为止,你已经知道如何去匹配一个字母或数字,但更多情况下,可能要匹配一个单词或一组数字。...最后,字符”+”与 {1,}是相等,表示”1个或多个前面的内容”,所以上面的4个例子可以写成: ^[a-zA-Z0-9_]+$ //所有包含一个以上字母、数字或下划线字符串 ^[0-9]+$ /

97330

Excel公式练习42: 统计句子满足条件单词个数

本次练习是:如下图1所示,在单元格A1有一段英文文本,其中可能包含标点符号或不包含标点符号,在单元格B1输入一个公式,识别文本包含五个元音字母单词,统计出这些单词个数。 ?...图1 注意,统计单词应满足: 1. 单词包含全部五个元音字母 2. 这五个元音字母在单词从左至右出现顺序是a、e、i、o、u 3....,用来确定字符串某个字符有多少个:使用原始字符串长度减去剔除掉指定字符字符串长度。...这样,就形成了一个69行5列数组,对应着每个单词删除一个元音字母后字符串。...例如第一个数组一个元素10(即单词"abstemious"长度)减去第二个数组第一行{9,9,9,9,9}(即单词"abstemious"分别去掉五个元音长度): 10-{9,9,9,9,9

1.4K30

Scala 高阶(八):集合内容汇总(下篇)

简单计算函数 高级计算函数 WordCount案例 二、队列 三、并行集合 ---- 在上一篇集合分享,讲解了Scala中集合基本概述以及常用集合基本操作,本次住要分享Scala中集合更高级操作...tail 集合最后一个数据last,除过最后一个元素初始数据init 反转reverse 取前()n 个元素 take(n) takeRight(n) 去掉前()n 个元素...Map操作: 过滤 filter(过滤条件):遍历一个集合并从中获取满足指定条件元素组成一个集合 映射map(自定义映射函数):将集合一个元素映射到某一个函数 扁平化flatten 将集合中集合元素拆开...(word => word) // 对分组List取长度,得到单词个数 val countMap = groupMap.map(kv => (kv._1, kv._2.length...为了充分使用多核 CPU,提供了并行集合(有别于前面的串行集合),用于多核环境并行计算。

60020
领券