Leetcode每日一题824. 山羊拉丁文

编程入门 行业动态 更新时间:2024-10-10 13:21:43

Leetcode每日一题824. 山羊<a href=https://www.elefans.com/category/jswz/34/1708232.html style=拉丁文"/>

Leetcode每日一题824. 山羊拉丁文

🐏🐏🐏

  • 写在前面
  • 题目
    • 📝思路📝
    • ⭐代码实现⭐
    • 复杂度分析
  • 写在最后

写在前面

📖本篇内容:Leetcode每日一题824. 山羊拉丁文


📑 文章专栏:leetcode每日一题《打卡日常》


⭐算法仓库:小🐏的变强之路

题目

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

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

如果单词以元音开头(‘a’, ‘e’, ‘i’, ‘o’, ‘u’),在单词后添加"ma"。
例如,单词 “apple” 变为 “applema” 。 如果单词以辅音字母开头(即,非元音字母),移除第一个字符并将它放到末尾,之后再添加"ma"。
例如,单词 “goat” 变为 “oatgma” 。 根据单词在句子中的索引,在单词最后添加与索引相同数量的字母’a’,索引从 1 开始。
例如,在第一个单词后添加 “a” ,在第二个单词后添加 “aa” ,以此类推。 返回将 sentence 转换为山羊拉丁文后的句子。

示例 1:

输入:sentence = “I speak Goat Latin”
输出:“Imaa peaksmaaa oatGmaaaa atinLmaaaaa”

示例 2:

输入:sentence = “The quick brown fox jumped over the lazy dog”
输出:“heTmaa uickqmaaa rownbmaaaa oxfmaaaaa umpedjmaaaaaa overmaaaaaaa hetmaaaaaaaa azylmaaaaaaaaa ogdmaaaaaaaaaa”

提示:

1 <= sentence.length <= 150
sentence 由英文字母和空格组成
sentence 不含前导或尾随空格
sentence 中的所有单词由单个空格分隔

📝思路📝

找到每一个单词 + 模拟

我们可以对给定的字符串 sentence 进行一次遍历,找出其中的每一个单词,并根据题目的要求进行操作。

在寻找单词时,我们可以使用语言自带的 split() 函数,将空格作为分割字符,得到所有的单词。为了节省空间,我们也可以直接进行遍历:每当我们遍历到一个空格或者到达 sentence 的末尾时,我们就找到了一个单词。

当我们得到一个单词 w 后,我们首先需要判断 w 的首字母是否为元音字母。我们可以使用一个哈希集合 vowels 存储所有的元音字母 aeiouAEIOU,这样只需要判断 w 的首字母是否在 vowels 中。如果是元音字母,那么单词本身保持不变;如果是辅音字母,那么需要首字母移到末尾,这里使用语言自带的字符串切片函数即可。在这之后,我们需要在末尾添加 m 以及若干个 a,因此可以使用一个变量 cnt 记录需要添加的 a 的个数,它的初始值为 1,每当我们得到一个单词,就将它的值增加 1。

⭐代码实现⭐

class Solution {
public:string toGoatLatin(string sentence) {unordered_set<char> vowels = {'a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'};int n = sentence.size();int i = 0, cnt = 1;string ans;while (i < n) {int j = i;while (j < n && sentence[j] != ' ') {++j;}++cnt;if (cnt != 2) {ans += ' ';}if (vowels.count(sentence[i])) {ans += sentence.substr(i, j - i) + 'm' + string(cnt, 'a');}else {ans += sentence.substr(i + 1, j - i - 1) + sentence[i] + 'm' + string(cnt, 'a');}i = j + 1;}return ans;}
};

复杂度分析

时间复杂度:O(n2)

空间复杂度:O(n)

写在最后

觉得本篇文章不错的话记得点赞👍,收藏⭐,还有问题也可以评论留言💬
你的支持将是我继续创作的最大动力❤️❤️❤️
由于作者水平有限,如有错误和不准确之处在所难免,本人也很想知道这些错误,恳望读者批评指正!

更多推荐

Leetcode每日一题824. 山羊拉丁文

本文发布于:2024-03-04 04:06:41,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1708226.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:拉丁文   山羊   Leetcode

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!