zoukankan      html  css  js  c++  java
  • Leetcode824.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。

    忘记判定元音大写的情况

    class Solution {
    public:
        string toGoatLatin(string S) {
            int len = S.size();
            if(len == 0)
                return "";
            string str = "";
            string temp = "";
            int cnt = 0;
            for(int i = 0; i < len; i++)
            {
                if(i == len - 1 || S[i] != ' ')
                {
                    temp += S[i];
                }
                if(S[i] == ' ' || i == len - 1)
                {
                    cnt++;
                    if(temp == "")
                        continue;
                    if(temp[0] == 'a' || temp[0] == 'e' || temp[0] == 'i' || temp[0] == 'o' || temp[0] == 'u'
                       || temp[0] == 'A' || temp[0] == 'E' || temp[0] == 'I' || temp[0] == 'O' || temp[0] == 'U')
                    {
                        temp += "ma";
                    }
                    else
                    {
                        char c = temp[0];
                        for(int j = 0; j < temp.size() - 1; j++)
                        {
                            temp[j] = temp[j + 1];
                        }
                        temp[temp.size() - 1] = c;
                        temp += "ma";
                    }
                    for(int j = 0; j < cnt; j++)
                    {
                        temp += 'a';
                    }
                    if(cnt != 1)
                        str += ' ';
                    str += temp;
                    temp = "";
                }
            }
            return str;
        }
    };
  • 相关阅读:
    斐波那契数列 的两种实现方式(Java)
    单链表反转
    单链表合并
    两个有序list合并
    list去重 转载
    RemoveAll 要重写equals方法
    Java for LeetCode 138 Copy List with Random Pointer
    Java for LeetCode 137 Single Number II
    Java for LeetCode 136 Single Number
    Java for LeetCode 135 Candy
  • 原文地址:https://www.cnblogs.com/lMonster81/p/10433944.html
Copyright © 2011-2022 走看看