给定一个由空格分割单词的句子 S
。每个单词只包含大写或小写字母。
我们要将句子转换为 “Goat Latin”(一种类似于 猪拉丁文 - Pig Latin 的虚构语言)。
山羊拉丁文的规则如下:
如果单词以元音开头(a, e, i, o, u),在单词后添加"ma"
。
例如,单词"apple"
变为"applema"
。
如果单词以辅音字母开头(即非元音字母),移除第一个字符并将它放到末尾,之后再添加"ma"
。
例如,单词"goat"
变为"oatgma"
。
根据单词在句子中的索引,在单词最后添加与索引相同数量的字母‘a‘
,索引从1开始。
例如,在第一个单词后添加"a"
,在第二个单词后添加"aa"
,以此类推。
返回将 S
转换为山羊拉丁文后的句子。
输入: "I speak Goat Latin"
输出: "Imaa peaksmaaa oatGmaaaa atinLmaaaaa"
输入: "The quick brown fox jumped over the lazy dog"
输出: "heTmaa uickqmaaa rownbmaaaa oxfmaaaaa umpedjmaaaaaa overmaaaaaaa hetmaaaaaaaa azylmaaaaaaaaa ogdmaaaaaaaaaa"
说明:
S
中仅包含大小写字母和空格。单词间有且仅有一个空格。1 <= S.length <= 150
。class Solution {
public:
string convert(const string& s, const vector<bool>& flag, const string& pst){
string res = "";
if(flag[s[0]]){
res = s + "ma" + pst;
}else{
res = s.substr(1) + s[0] + "ma" + pst;
}
return res;
}
string toGoatLatin(string S) {
int sz = S.size();
string pst = "a";
vector<bool> flag(128, false);
string vowels = "aeiouAEIOU";
for(char ch : vowels){
flag[ch] = true;
}
int i = 0, j = 0;
string res = "";
while(i < sz){
while(j < sz && S[j] != ' '){
j++;
}
if(i == j){
// is whitespace
res += ' ';
j++;
}else{
res += convert(S.substr(i, j - i), flag, pst);
pst += 'a';
}
i = j;
}
return res;
}
};
leetcode 824. 山羊拉丁文(Goat Latin)
原文:https://www.cnblogs.com/zhanzq/p/10637884.html