力扣 824. 山羊拉丁文 Java

ganlanA發表於2020-11-14

給定一個由空格分割單詞的句子 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

Java

class Solution {
    public String toGoatLatin(String S) {
        Set<Character> vowel = new HashSet();//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();//StringBuilder是可變字串
        for(String word : S.split(" ")){
            char first = word.charAt(0);//first是第一個字元
            if(vowel.contains(first)){//第一個字元是母音
                ans.append(word);
            }else {//不是母音,翻轉.
                ans.append(word.substring(1));
                ans.append(word.substring(0, 1)); // substring 擷取字串Start 到 End - 1的部分
            }
            ans.append("ma");
            for(int i = 0; i < t; i++)
                ans.append("a");
            t++;
            ans.append(" ");
        }
        ans.deleteCharAt(ans.length() - 1);//刪除最後一個空格
        return ans.toString();
    }
}

相關文章