首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >每日一题(2022-04-21)——山羊拉丁文

每日一题(2022-04-21)——山羊拉丁文

作者头像
传说之下的花儿
发布2023-04-16 15:21:20
发布2023-04-16 15:21:20
4400
举报

824. 山羊拉丁文

题目描述:

给你一个由若干单词组成的句子 sentence ,单词间由空格分隔。每个单词仅由大写和小写英文字母组成。 请你将句子转换为 “山羊拉丁文(Goat Latin,返回将 sentence 转换为山羊拉丁文后的句子。 山羊拉丁文的规则如下:

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

示例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”

题解:

代码语言:javascript
复制
func toGoatLatin(sentence string) string {
	assistStr := "aeiouAEIOU"
	words := strings.Split(sentence, " ")
	ansSlice:=make([]string,len(words))
	// 遍历words,对应的i,同样也是变化后的word在ansSlice切片中的位置
	for i, word := range words {
		index := i + 1
		if strings.Contains(assistStr, string(word[0])) {
			word = addA(word+"ma", index)
			ansSlice[i] = word
			continue
		} else {
			word = addA(word[1:]+string(word[0])+"ma", index)
			ansSlice[i] = word
			continue
		}
	}
	return strings.Join(ansSlice," ")
}

// word后追加a,index是多少,追加几个“a”
func addA(word string, index int) string {
	for i := 0; i < index; i++ {
		word = word + "a"
	}
	return word
}

提交结果:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-04-22,如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • 824. 山羊拉丁文
    • 题目描述:
    • 题解:
    • 提交结果:
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档