leetcode之山羊拉丁文

本文主要記錄一下leetcode之山羊拉丁文網絡

題目

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

來源:力扣(LeetCode)
連接:https://leetcode-cn.com/problems/goat-latin
著做權歸領釦網絡全部。商業轉載請聯繫官方受權,非商業轉載請註明出處。

題解

class Solution {
    Set<Character> set = new HashSet<>(){{
        add('a');
        add('e');
        add('i');
        add('o');
        add('u');
        add('A');
        add('E');
        add('I');
        add('O');
        add('U');
    }};

    public String toGoatLatin(String S) {
        String[] words = S.split(" ");
        StringBuilder builder = new StringBuilder();
        for(int i=0; i<words.length; i++) {
            if (set.contains(words[i].charAt(0))){
                builder.append(words[i] + "ma");
            } else {
                builder.append(words[i].substring(1) + words[i].charAt(0) + "ma");
            }
            for (int j = 0; j < i + 1; j++) {
                builder.append('a');
            }
                
            builder.append(' ');
        }
        return builder.toString().trim();
    }
}

小結

這裏先將字符串按空格分割爲單詞,而後遍歷每一個單詞,判斷首字母是否爲元音,是的話在後面添加ma,不是的話將首字母移到後面再拼接ma,最後再根據單詞在句子中的index拼接指定個數的a。app

doc