LeetCode每日一题(6)——山羊拉丁文

简介: 山羊拉丁文1.题目2.示例3.思路4.代码5.复杂度分析

1.题目


给你一个由若干单词组成的句子 sentence ,单词间由空格分隔。每个单词仅由大写和小写英文字母组成。


请你将句子转换为 “山羊拉丁文(Goat Latin)”(一种类似于 猪拉丁文 - Pig Latin 的虚构语言)。山羊拉丁文的规则如下:


如果单词以元音开头(‘a’, ‘e’, ‘i’, ‘o’, ‘u’),在单词后添加"ma"。

例如,单词 “apple” 变为 “applema” 。

如果单词以辅音字母开头(即,非元音字母),移除第一个字符并将它放到末尾,之后再添加"ma"。

例如,单词 “goat” 变为 “oatgma” 。

根据单词在句子中的索引,在单词最后添加与索引相同数量的字母’a’,索引从 1 开始。

例如,在第一个单词后添加 “a” ,在第二个单词后添加 “aa” ,以此类推。

返回将 sentence 转换为山羊拉丁文后的句子。


2.示例


示例 1:

输入:sentence = “I speak Goat Latin”

输出:“Imaa peaksmaaa oatGmaaaaatinLmaaaaa”


示例 2:


输入:sentence = “The quick brown fox jumped over the lazy dog”


输出:“heTmaa uickqmaaa rownbmaaaa oxfmaaaaa umpedjmaaaaaaovermaaaaaaahetmaaaaaaaaazylmaaaaaaaaa ogdmaaaaaaaaaa”


提示:


1 <= sentence.length <= 150 sentence

由英文字母和空格组成

sentence 不含前导或尾随空格

sentence 中的所有单词由单个空格分隔


3.思路


分割字符串,遍历,根据要求的情况做出相应的处理即可。思路都在题目里了。


4.代码


func toGoatLatin(sentence string) string {
  sen := strings.Split(sentence, " ")
  fmt.Println(sen[0])
  for i := 0; i < len(sen); i++{
    wor := sen[i]
    vowels := map[byte]bool{'a': true, 'e': true, 'i': true, 'o': true, 'u': true, 'A': true, 'E': true, 'I': true, 'O': true, 'U': true}
    if !vowels[wor[0]] {
      if len(sen[i]) > 1 {
        move := string(sen[i][0])
        sen[i] = sen[i][1: len(sen[i])] + move
      }
    }
    sen[i] = sen[i]+"ma"
    for j := 0; j <= i; j++{
      fmt.Println(sen[i])
      sen[i] = sen[i] + "a"
    }
  }
  goast := strings.Join(sen," ")
  return goast
}


5.复杂度分析


因为一个单词不会太长,所以我认为我的时间复杂度为O(n)

直接修改了原字符串,空间复杂度也应该是O(n)才对,但是内存消耗只击败了go里18%的用户。

相关文章
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
280页PDF,全方位评估OpenAI o1,Leetcode刷题准确率竟这么高
【10月更文挑战第24天】近年来,OpenAI的o1模型在大型语言模型(LLMs)中脱颖而出,展现出卓越的推理能力和知识整合能力。基于Transformer架构,o1模型采用了链式思维和强化学习等先进技术,显著提升了其在编程竞赛、医学影像报告生成、数学问题解决、自然语言推理和芯片设计等领域的表现。本文将全面评估o1模型的性能及其对AI研究和应用的潜在影响。
99 1
|
5月前
|
数据采集 负载均衡 安全
LeetCode刷题 多线程编程九则 | 1188. 设计有限阻塞队列 1242. 多线程网页爬虫 1279. 红绿灯路口
本文提供了多个多线程编程问题的解决方案,包括设计有限阻塞队列、多线程网页爬虫、红绿灯路口等,每个问题都给出了至少一种实现方法,涵盖了互斥锁、条件变量、信号量等线程同步机制的使用。
LeetCode刷题 多线程编程九则 | 1188. 设计有限阻塞队列 1242. 多线程网页爬虫 1279. 红绿灯路口
|
5月前
|
Unix Shell Linux
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
本文提供了几个Linux shell脚本编程问题的解决方案,包括转置文件内容、统计词频、验证有效电话号码和提取文件的第十行,每个问题都给出了至少一种实现方法。
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
|
6月前
|
Python
【Leetcode刷题Python】1467. 两个盒子中球的颜色数相同的概率
本文介绍了LeetCode第50题"Pow(x, n)"的解法,题目要求实现计算x的n次幂的函数,文章提供了递归分治法的详细解析和Python实现代码。
75 0
|
6月前
|
Python
【Leetcode刷题Python】50. Pow(x, n)
本文介绍了LeetCode第50题"Pow(x, n)"的解法,题目要求实现计算x的n次幂的函数,文章提供了递归分治法的详细解析和Python实现代码。
38 1
|
6月前
|
搜索推荐 索引 Python
【Leetcode刷题Python】牛客. 数组中未出现的最小正整数
本文介绍了牛客网题目"数组中未出现的最小正整数"的解法,提供了一种满足O(n)时间复杂度和O(1)空间复杂度要求的原地排序算法,并给出了Python实现代码。
146 2
|
6月前
|
算法 Python
【Leetcode刷题Python】73. 矩阵置零
本文介绍了LeetCode第73题的解法,题目要求在给定矩阵中将所有值为0的元素所在的行和列全部置为0,并提供了一种原地算法的Python实现。
54 0
【Leetcode刷题Python】73. 矩阵置零
|
6月前
|
Python
【Leetcode刷题Python】LeetCode 478. 在圆内随机生成点
本文介绍了LeetCode 478题的解法,题目要求在给定圆的半径和圆心位置的情况下实现在圆内均匀随机生成点的功能,并提供了Python的实现代码。
46 1
|
6月前
|
算法 Python
【Leetcode刷题Python】 LeetCode 2038. 如果相邻两个颜色均相同则删除当前颜色
本文介绍了LeetCode 2038题的解法,题目要求在一个由'A'和'B'组成的字符串中,按照特定规则轮流删除颜色片段,判断Alice是否能够获胜,并提供了Python的实现代码。
69 3
|
6月前
|
算法 Python
【Leetcode刷题Python】295. 数据流的中位数
本文介绍了一种使用Python实现的数据结构,用以支持数据流中添加整数并返回当前所有元素的中位数,通过排序列表来计算中位数。
47 1