力扣:824、山羊拉丁文

夏天真舒服!!發表於2019-02-16

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

思路:

其實沒有什麼思路。。。用兩個變數當指標,其中一個right從最左邊開始掃描當遇到空格就停下來,另一個left留在最左邊(一個單詞的最左邊),當right遇到空格停下來,left和right之間剛好是一個單詞,這是對單詞進行判斷和修改之類的,完了時候,left移到rigth(也就是空格)的後一個,指向下一個單詞的第一個字母,right移到left的位置繼續往後掃描遇到空格停下來這樣迴圈。

class Solution {
    public String toGoatLatin(String S) {
         S += " ";
         char[] c = S.toCharArray();
        String s1 = S;
        String s = "";
        int left = 0;
        int right = 0;
        int index = 1;
        while (right < c.length && left < c.length) {
            if (c[right] == ' '|| right == c.length-1) {
                if (c[left] == 'A' || c[left] == 'E' || c[left] == 'I' || c[left] == 'O' || c[left] == 'U' || c[left] == 'a' || c[left] == 'e' || c[left] == 'i' || c[left] == 'o' || c[left] == 'u') {
                    s += s1.substring(left, right) + "ma";
                    left = right + 1;
                } else {
                    s += s1.substring(left + 1, right) + S.charAt(left) + "ma";
                    left = right+1;
                }
                for (int i = 0; i < index; i++) {
                    s += "a";
                }
                index++;
                if(right!=c.length-1){
                    s += " ";
                }
                right = left;
            } else right++;
        }
        return s;
    }
}

第一次寫部落格,啊啊~~。雖然程式碼寫的很差但是!!我很厲害。歡迎指正交流吖~

相關文章