LeetCode-824 划水记录3

转载   hzChan   2018-11-10   浏览量:12


给定一个由空格分割单词的句子 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的时间我是有点迷 的。
LeetCode-824 划水记录3

转载自://blog.51cto.com/3458905/2315438

招聘 不方便扫码就复制添加关注:程序员招聘谷,微信号:jobs1024



C++语言学习(九)——C++标准库简介
C++语言学习(九)——C++标准库简介一、C++标准库简介1、C++标准库简介C++标准库(C++StandardLibrary),是类库和函数的集合。C++编译器厂商根据C++标准委员会官方的ISO规范并将其转化为代码。C++编译器厂商在实现C++标准库过程中必须依赖其不同操作系统所提供的系统调用接口,因此每个平台都有其自己的C++标准库实现。C++标准库的特点如下:A、C++标准库不是C++
C++语言学习(八)——操作符重载
C++语言学习(八)——操作符重载一、操作符重载基础1、操作符重载的语法通过operator关键字可以定义特殊的函数,operator本质是通过函数重载操作符。Typeoperatoroperatorname(constTypep1,constTypep2){Typeret;returnret;}2、友元函数重载操作符可以将操作符重载函数声明为友元函数。#include
C++语言学习(七)——友元
C++语言学习(七)——友元一、友元简介1、友元简介面向对象编程的类的设计机制实现了数据的隐藏与封装,类的成员变量一般定义为私有成员,成员函数一般定义为公有的,是类与外部的通信接口。在实践中,类外的某些函数需要频繁地访问类的成员变量,可以将类外的函数定义为类的友元函数。除了友元函数外,还有友元类,两者统称为友元。友元的作用是提高了程序的运行效率(即减少了类型检查和安全性检查等都需要时间开销),但友
C++语言学习(六)——二阶构造模式
C++语言学习(六)——二阶构造模式一、构造函数的问题构造函数存在的问题:A、构造函数只提供自动初始化成员变量的机会B、不能保证初始化逻辑一定成功,如申请系统资源可能失败C、执行return语句后构造函数立即结束构造函数创建的对象可能是半成品对象,半成品对象是合法的对象,但是程序bug的来源之一。因此实际工程开发过程中使用二阶构造模式。二、二阶构造模式1、二阶构造模式简介由于构造函数存在的潜在问题
C++语言学习(五)——C++语言中的CV限定符错误
C++语言学习(五)——C++语言中的CV限定符错误一、CV限定符错误简介1、CV限定符简介CV限定符即cv-qualifier,C++语言中指const和volatile限定符。通常,C++语言中有两种情况不能使用CV限定符进行限定:A、非成员函数不能使用CV限定B、静态成员函数不能使用CV限定2、CV限定符错误信息简介C++语言中CV限定符错误信息如“cannothavecv-qualifie
C++语言学习(四)——类与对象
C++语言学习(四)——类与对象一、构造函数(constructor)1、构造函数简介C++语言中,构造函数是与类名相同的特殊成员函数。在类对象创建时,自动调用构造函数,完成类对象的初始化。类对象本身是变量,在栈、堆上创建的对象,对象的成员初始化为随机值;在静态存储区创建的对象,对象的成员初始化为0。2、构造函数的定义构造函数声明的语法如下:classname(parameters);没有参数的构
Fishhook原理 源码解读)
用到技术利用dyld相关接口,我们可以注册image装载的监听方法:externvoid_dyld_register_func_for_add_image(void(func)(conststructmach_headermh,intptr_tvmaddr_slide));调用_dyld_register_func_for_add_image注册监听方法后,当前已经装载的image(动态库等)会立
C++反射机制:可变参数模板实现C++反射
1.概要??本文描述一个通过C++可变参数模板实现C++反射机制的方法。该方法非常实用,在Nebula高性能网络框架中大量应用,实现了非常强大的动态加载动态创建功能。Nebula框架在coding.net的仓库地址。??C++11的新特性--可变模版参数(variadictemplates)是C++11新增的最强大的特性之一,它对参数进行了高度泛化,它能表示
MachOView源码 AppController.mm
//AppController.h/**AppController.h*MachOView**Createdbypsaghelyion15/06/2010.**/#import@classMVPreferenceController;@interfaceMVAppController:NSObject
火车订票系统源码笔记c++
火车订票系统源码笔记c++