友情支持

如果您觉得这个笔记对您有所帮助,看在D瓜哥码这么多字的辛苦上,请友情支持一下,D瓜哥感激不尽,😜

支付宝

微信

有些打赏的朋友希望可以加个好友,欢迎关注D 瓜哥的微信公众号,这样就可以通过公众号的回复直接给我发信息。

wx jikerizhi

公众号的微信号是: jikerizhi因为众所周知的原因,有时图片加载不出来。 如果图片加载不出来可以直接通过搜索微信号来查找我的公众号。

824. 山羊拉丁文

给你一个由若干单词组成的句子 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 中的所有单词由单个空格分隔

思路分析

简单模拟题!

  • 一刷

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
/**
 * @author D瓜哥 · https://www.diguage.com
 * @since 2026-07-17 22:31:31
 */
public String toGoatLatin(String sentence) {
  String[] words = sentence.split(" ");
  StringJoiner joiner = new StringJoiner(" ");
  Set<Character> set = Set.of('a', 'e', 'i', 'o', 'u');
  for (int i = 0; i < words.length; i++) {
    String word = words[i];
    if (set.contains((char) (word.charAt(0) | 0b10_0000))) {
      joiner.add(word + "ma" + "a".repeat(i + 1));
    } else {
      joiner.add(word.substring(1) + word.charAt(0) + "ma" + "a".repeat(i + 1));
    }
  }
  return joiner.toString();
}