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%的用户。

相关文章
|
存储 算法 索引
LeetCode——824. 山羊拉丁文
LeetCode——824. 山羊拉丁文
91 0
LeetCode——824. 山羊拉丁文
|
索引
LeetCode每日一题——824. 山羊拉丁文
给你一个由若干单词组成的句子 sentence ,单词间由空格分隔。每个单词仅由大写和小写英文字母组成。
107 0
【算法千题案例】每日LeetCode打卡——99.山羊拉丁文
📢前言 🌲原题样例:山羊拉丁文 🌻C#方法:遍历 🌻Java 方法:字符串 💬总结
|
3月前
|
Unix Shell Linux
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
本文提供了几个Linux shell脚本编程问题的解决方案,包括转置文件内容、统计词频、验证有效电话号码和提取文件的第十行,每个问题都给出了至少一种实现方法。
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
|
4月前
|
Python
【Leetcode刷题Python】剑指 Offer 32 - III. 从上到下打印二叉树 III
本文介绍了两种Python实现方法,用于按照之字形顺序打印二叉树的层次遍历结果,实现了在奇数层正序、偶数层反序打印节点的功能。
63 6
|
4月前
|
Python
【Leetcode刷题Python】剑指 Offer 26. 树的子结构
这篇文章提供了解决LeetCode上"剑指Offer 26. 树的子结构"问题的Python代码实现和解析,判断一棵树B是否是另一棵树A的子结构。
57 4
|
4月前
|
搜索推荐 索引 Python
【Leetcode刷题Python】牛客. 数组中未出现的最小正整数
本文介绍了牛客网题目"数组中未出现的最小正整数"的解法,提供了一种满足O(n)时间复杂度和O(1)空间复杂度要求的原地排序算法,并给出了Python实现代码。
128 2
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
280页PDF,全方位评估OpenAI o1,Leetcode刷题准确率竟这么高
【10月更文挑战第24天】近年来,OpenAI的o1模型在大型语言模型(LLMs)中脱颖而出,展现出卓越的推理能力和知识整合能力。基于Transformer架构,o1模型采用了链式思维和强化学习等先进技术,显著提升了其在编程竞赛、医学影像报告生成、数学问题解决、自然语言推理和芯片设计等领域的表现。本文将全面评估o1模型的性能及其对AI研究和应用的潜在影响。
46 1
|
3月前
|
数据采集 负载均衡 安全
LeetCode刷题 多线程编程九则 | 1188. 设计有限阻塞队列 1242. 多线程网页爬虫 1279. 红绿灯路口
本文提供了多个多线程编程问题的解决方案,包括设计有限阻塞队列、多线程网页爬虫、红绿灯路口等,每个问题都给出了至少一种实现方法,涵盖了互斥锁、条件变量、信号量等线程同步机制的使用。
LeetCode刷题 多线程编程九则 | 1188. 设计有限阻塞队列 1242. 多线程网页爬虫 1279. 红绿灯路口
|
4月前
|
索引 Python
【Leetcode刷题Python】从列表list中创建一颗二叉树
本文介绍了如何使用Python递归函数从列表中创建二叉树,其中每个节点的左右子节点索引分别是当前节点索引的2倍加1和2倍加2。
72 7