LeetCode-824 划水记录3

给定一个由空格分割单词的句子 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。

思路不难,但是写的时候有好多bug出现,调试了好多此,果然是水平还不够,代码都不是自己熟悉的模型。导致不断产生bug。。诶。。

string toGoatLatin(string S) {
    int ZFCCD = S.size();
    int SFYY = 0, FYYSY = 0, KGSM = 0, YSCDSY = 0, XHBL = 0, XHBL2 = 0;
    char *ZFCZZ = (char*)S.data();
    char XXZM = 0;
    char SXZM = 0;
    string ZZD;
    for (XHBL=0; XHBL <ZFCCD; XHBL++)
    {
        if ((XHBL == 0 || (ZFCZZ[XHBL-1])==‘ ‘))        //首字母
        {
            if (ZFCZZ[XHBL] >= ‘A‘ && ZFCZZ[XHBL] <= ‘Z‘)
            {
                XXZM = ZFCZZ[XHBL] + 32;
            }
            else
                XXZM = ZFCZZ[XHBL];
            if (XXZM == ‘a‘ || XXZM == ‘o‘ || XXZM == ‘i‘ || XXZM == ‘u‘ || XXZM == ‘e‘)
                SFYY = 1;

            YSCDSY = ZZD.size();
            FYYSY = XHBL;
        }
        if (ZFCZZ[XHBL] == ‘ ‘ || ZFCZZ[XHBL+1] == 0)   //一个单词结尾了
        {
            if (ZFCZZ[XHBL + 1] == 0)
                ZZD += ZFCZZ[XHBL];

            if (!SFYY)//辅音
            {
                ZZD += (ZFCZZ[FYYSY]);
                ZZD=ZZD.erase(YSCDSY,1);
            }
            ZZD += "ma";
            KGSM++;
            for (XHBL2 = 0; XHBL2 < KGSM; XHBL2++)
                ZZD += ‘a‘;
            if(ZFCZZ[XHBL + 1] != 0)
            ZZD += ‘ ‘;
            SFYY = 0;
            continue;
        }
        ZZD += ZFCZZ[XHBL];
    }
    return ZZD;
}

这leetcode的时间我是有点迷 的。

原文地址:http://blog.51cto.com/3458905/2315438

时间: 2024-10-09 06:19:02

LeetCode-824 划水记录3的相关文章

Leetcode 442 划水记录05

题目:**给定一个整数数组 a,其中1 ≤ a[i] ≤ n (n为数组长度), 其中有些元素出现两次而其他元素出现一次. 找到所有出现两次的元素. 你可以不用到任何额外空间并在O(n)时间复杂度内解决这个问题吗? 示例: 输入:[4,3,2,7,8,2,3,1] 输出:[2,3]** 看题目条件给的数据大小我就想用计数排序,但是怎么不申请额外空间呢?其实完全可以利用每个元素的高位数据保存信息. 但是要确定要保存的信息的范围大小比如你保存的是1-100 那你得给高8位留下来保存数据 底24位用来

Leetcode刷题记录[python]——344 Reverse String

一.前言 不是计算机专业出身,却有一颗程序猿的心. 昨日开始leetcode第一次刷题,选择了菜鸟方式,从AC率最高且难度为Easy的题开始,不管题是简单还是难,都想做个记录,既是方便以后回顾,又是以此作为一个激励,督促自己每天都能有所进步. 二.题344 Reverse String Write a function that takes a string as input and returns the string reversed. class Solution(object): def

【LeetCode在线编程记录-1】字符串按单词反转

写在前面 LeetCode(地址:https://oj.leetcode.com/)是一个在线编程网站,题目经典,测试用例完备,共计157道算法类的题目.之后我会记录我的一些练习题目,有些答案是我自己原创的(说是原创,也很可能是之前在别的地方看到的而已),有些是从讨论区看到的,我都会明确标注出处. Reverse Words in a String Given an input string, reverse the string word by word. For example, Given

LeetCode-62 划水记录 04

题目一看;感觉可以用回溯法 就是从(0.0)开始 走到下一步 再走下一步 走到尽头了 向右边走 到尽头了回去上一个格子 再从上一个格子换一个方向 走 因为只能走2个方向 如果一个格子2个方向都走完了 就又回到上一个通过这样的办法 可以列出所有路径 并且找到所有的路径数之和.回溯法递归实现:代码如下: //递归版 void uniquePaths2(int m, int n,int H,int L,int *res) { if (m == H && n == L) { (*res)++; r

近日LeetCode算法(记录)

近日LeetCode算法 前言:最近刷了好多leetcode算法题,大家知道,程序=数据结构+算法,由此可见,算法真的是很重要的呢.闲话少谈,切入正题,来看看小编觉得有点意思的5题算法题吧... 1. LeetCode 73:矩阵置零 难度等级:中等 题目 给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0. 示例 解题思路 这是一个二维数组,我们只需要遍历一遍这个二维数组,把元素为0的那个位置所在的行与列分别标记起来,可以放在一个HashSet中,我们都知道

Leetcode 刷题记录 &amp; VLIS学长们的战绩

November 28, 2014 Leetcode全垒打! 以此纪念.找工作的路还是很漫长.继续奋斗.有学长学姐们的督促,必须更加努力. http://mcds.cs.cmu.edu/?q=node/26 2013 Chun Chen (Twitter, San Francisco, CA) Yiwen Chen (GOOGLE, Mt. View, CA) Mengwei Ding (GOOGLE, Mt. View, CA) Ge Gao (GOOGLE, Mt. View, CA) Yu

Leetcode刷题记录[python]——349 Intersection of Two Arrays

一.前言 做了两题才慢慢摸清了leetcode的操作. 二.题349 Intersection of Two Arrays Given two arrays, write a function to compute their intersection. class Solution(object): def intersection(self, nums1, nums2): """ :type nums1: List[int] :type nums2: List[int]

Leetcode刷题记录[python]——283 Move Zeroes

一.前言 题是上周五做的,开始思路有点问题,考虑不全,导致submit了3次才AC. 二.题283 Move Zeroes Given an array nums, write a function to move all 0's to the end of it while maintaining the relative order of the non-zero elements. For example, given nums = [0, 1, 0, 3, 12], after call

leetcode刷题记录(2)

301. Remove Invalid Parentheses Remove the minimum number of invalid parentheses in order to make the input string valid. Return all possible results. Note: The input string may contain letters other than the parentheses ( and ). Examples: "()())()&q

LeetCode 824. Goat Latin (山羊拉丁文)

题目标签:String 首先把vowel letters 保存入 HashSet. 然后把S 拆分成 各个 word,遍历每一个 word: 当 word 第一个 字母不是 vowel 的时候,把第一个char 加到最后: 然后添加“ma” 和 “a“ 到最后: 添加新的"a": 把新的 word 加入 result,还要记得加入空格. Java Solution: Runtime beats 62.66% 完成日期:10/12/2018 关键词:String 关键点:利用HashSe