返回介绍

solution / 0800-0899 / 0824.Goat Latin / README_EN

发布于 2024-06-17 01:03:34 字数 4806 浏览 0 评论 0 收藏 0

824. Goat Latin

中文文档

Description

You are given a string sentence that consist of words separated by spaces. Each word consists of lowercase and uppercase letters only.

We would like to convert the sentence to "Goat Latin" (a made-up language similar to Pig Latin.) The rules of Goat Latin are as follows:

  • If a word begins with a vowel ('a', 'e', 'i', 'o', or 'u'), append "ma" to the end of the word.
    • For example, the word "apple" becomes "applema".
  • If a word begins with a consonant (i.e., not a vowel), remove the first letter and append it to the end, then add "ma".
    • For example, the word "goat" becomes "oatgma".
  • Add one letter 'a' to the end of each word per its word index in the sentence, starting with 1.
    • For example, the first word gets "a" added to the end, the second word gets "aa" added to the end, and so on.

Return_ the final sentence representing the conversion from sentence to Goat Latin_.

 

Example 1:

Input: sentence = "I speak Goat Latin"
Output: "Imaa peaksmaaa oatGmaaaa atinLmaaaaa"

Example 2:

Input: sentence = "The quick brown fox jumped over the lazy dog"
Output: "heTmaa uickqmaaa rownbmaaaa oxfmaaaaa umpedjmaaaaaa overmaaaaaaa hetmaaaaaaaa azylmaaaaaaaaa ogdmaaaaaaaaaa"

 

Constraints:

  • 1 <= sentence.length <= 150
  • sentence consists of English letters and spaces.
  • sentence has no leading or trailing spaces.
  • All the words in sentence are separated by a single space.

Solutions

Solution 1

class Solution:
  def toGoatLatin(self, sentence: str) -> str:
    ans = []
    for i, word in enumerate(sentence.split()):
      if word.lower()[0] not in ['a', 'e', 'i', 'o', 'u']:
        word = word[1:] + word[0]
      word += 'ma'
      word += 'a' * (i + 1)
      ans.append(word)
    return ' '.join(ans)
class Solution {
  public String toGoatLatin(String sentence) {
    List<String> ans = new ArrayList<>();
    Set<Character> vowels
      = new HashSet<>(Arrays.asList('a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'));
    int i = 1;
    for (String word : sentence.split(" ")) {
      StringBuilder t = new StringBuilder();
      if (!vowels.contains(word.charAt(0))) {
        t.append(word.substring(1));
        t.append(word.charAt(0));
      } else {
        t.append(word);
      }
      t.append("ma");
      for (int j = 0; j < i; ++j) {
        t.append("a");
      }
      ++i;
      ans.add(t.toString());
    }
    return String.join(" ", ans);
  }
}
function toGoatLatin(sentence: string): string {
  return sentence
    .split(' ')
    .map((s, i) => {
      let startStr: string;
      if (/[aeiou]/i.test(s[0])) {
        startStr = s;
      } else {
        startStr = s.slice(1) + s[0];
      }
      return `${startStr}ma${'a'.repeat(i + 1)}`;
    })
    .join(' ');
}
use std::collections::HashSet;
impl Solution {
  pub fn to_goat_latin(sentence: String) -> String {
    let set: HashSet<&char> = ['a', 'e', 'i', 'o', 'u'].into_iter().collect();
    sentence
      .split_whitespace()
      .enumerate()
      .map(|(i, s)| {
        let first = char::from(s.as_bytes()[0]);
        let mut res = if set.contains(&first.to_ascii_lowercase()) {
          s.to_string()
        } else {
          s[1..].to_string() + &first.to_string()
        };
        res.push_str("ma");
        res.push_str(&"a".repeat(i + 1));
        res
      })
      .into_iter()
      .collect::<Vec<String>>()
      .join(" ")
  }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文