824. Goat Latin
题目描述和难度
- 题目描述:
给定一个由空格分割单词的句子 S
。每个单词只包含大写或小写字母。
我们要将句子转换为 “Goat Latin”(一种类似于 猪拉丁文 - Pig Latin 的虚构语言)。
山羊拉丁文的规则如下:
- 如果单词以元音开头(a, e, i, o, u),在单词后添加
"ma"
。
例如,单词"apple"
变为"applema"
。 - 如果单词以辅音字母开头(即非元音字母),移除第一个字符并将它放到末尾,之后再添加
"ma"
。
例如,单词"goat"
变为"oatgma"
。 - 根据单词在句子中的索引,在单词最后添加与索引相同数量的字母
'a'
,索引从1开始。
例如,在第一个单词后添加"a"
,在第二个单词后添加"aa"
,以此类推。
返回将 S
转换为山羊拉丁文后的句子。
示例 1:
输入: "I speak Goat Latin" 输出: "Imaa peaksmaaa oatGmaaaa atinLmaaaaa"
示例 2:
输入: "The quick brown fox jumped over the lazy dog" 输出: "heTmaa uickqmaaa rownbmaaaa oxfmaaaaa umpedjmaaaaaa overmaaaaaaa hetmaaaaaaaa azylmaaaaaaaaa ogdmaaaaaaaaaa"
说明:
S
中仅包含大小写字母和空格。单词间有且仅有一个空格。1 <= S.length <= 150
。
- 题目难度:简单。
- 英文网址:824. Goat Latin 。
- 中文网址:824. 山羊拉丁文 。
思路分析
求解关键:这道题其实没有什么难度,直接按照题目的要求拼接就可以了。
参考解答
参考解答1
import java.util.HashSet;
import java.util.Set;
public class Solution {
public String toGoatLatin(String S) {
// vowel 元音字符
Set<Character> vowel = new HashSet<>();
for (char c : new char[]{'a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'}) {
vowel.add(c);
}
// 索引的个数
int t = 1;
StringBuilder ans = new StringBuilder();
for (String word : S.split("\\s")) {
char first = word.charAt(0);
// 题目要求的第 1 条
if (vowel.contains(first)) {
ans.append(word);
} else {
// 题目要求的第 2 条
ans.append(word.substring(1));
ans.append(word.substring(0, 1));
}
ans.append("ma");
// 题目要求的第 3 条
for (int i = 0; i < t; i++) {
ans.append('a');
}
ans.append(" ");
t++;
}
// 删除最后一个空格
ans.deleteCharAt(ans.length() - 1);
return ans.toString();
}
public static void main(String[] args) {
Solution solution = new Solution();
String S = "I speak Goat Latin";
String goatLatin = solution.toGoatLatin(S);
System.out.println(goatLatin);
}
}
本篇文章的地址为 https://liweiwei1419.github.io/leetcode-solution/leetcode-0824-goat-latin ,如果我的题解有错误,或者您有更好的解法,欢迎您告诉我 liweiwei1419@gmail.com 。