zoukankan      html  css  js  c++  java
  • 824. Goat Latin

    package LeetCode_824
    
    /**
     * 824. Goat Latin
     * https://leetcode.com/problems/goat-latin/
     * A sentence S is given, composed of words separated by spaces. Each word consists of lowercase and uppercase letters only.
    We would like to convert the sentence to "Goat Latin" (a made-up language similar to Pig Latin.)
    The rules of Goat Latin are as follows:
    If a word begins with a vowel (a, e, i, o, or u), append "ma" to the end of the word.
    For example, the word 'apple' becomes 'applema'.
    If a word begins with a consonant (i.e. not a vowel), remove the first letter and append it to the end, then add "ma".
    For example, the word "goat" becomes "oatgma".
    Add one letter 'a' to the end of each word per its word index in the sentence, starting with 1.
    For example, the first word gets "a" added to the end, the second word gets "aa" added to the end and so on.
    Return the final sentence representing the conversion from S to Goat Latin.
    
    Example 1:
    Input: "I speak Goat Latin"
    Output: "Imaa peaksmaaa oatGmaaaa atinLmaaaaa"
    
    Example 2:
    Input: "The quick brown fox jumped over the lazy dog"
    Output: "heTmaa uickqmaaa rownbmaaaa oxfmaaaaa umpedjmaaaaaa overmaaaaaaa hetmaaaaaaaa azylmaaaaaaaaa ogdmaaaaaaaaaa"
     * */
    class Solution {
        fun toGoatLatin(S: String): String {
            /*
            * solution: rule by requirement, Time:O(n), Space:O(n)
            * */
            val result = StringBuilder()
            val vowels = listOf('a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U')
            val aBuilder = StringBuilder("a")
            val list = S.split(" ")
            for (item in list) {
                val firstChar = item[0]
                if (firstChar in vowels) {
                    result.append(item).append("ma")
                } else {
                    result.append(item.substring(1, item.length)).append(firstChar).append("ma")
                }
                result.append(aBuilder)
                result.append(" ")
                //increasing a
                aBuilder.append("a")
            }
            //remove last " "
            result.setLength(result.length - 1)
            return result.toString()
        }
    }
  • 相关阅读:
    前端学PHP之语句
    前端学PHP之运算符
    ASP.NET MVC的TextBoxFor()和TextBox()
    在_Layout模版中使用@Styles.Render()没有效果
    使用HTML.ActionLink实现一个图片链接
    微软最有价值专家大中华峰会花絮视频
    激活当前视图菜单高亮呈现
    获取当前视图名
    Razor语法中链接的一些方法
    Razor语法的一些特殊需求输出
  • 原文地址:https://www.cnblogs.com/johnnyzhao/p/14071445.html
Copyright © 2011-2022 走看看