LeetCode每日一题 (824. 山羊拉丁文)

编程入门 行业动态 更新时间:2024-10-10 23:23:16

LeetCode每日一题 (824. 山羊<a href=https://www.elefans.com/category/jswz/34/1708232.html style=拉丁文)"/>

LeetCode每日一题 (824. 山羊拉丁文)

824. 山羊拉丁文

给你一个由若干单词组成的句子 sentence ,单词间由空格分隔。每个单词仅由大写和小写英文字母组成。

请你将句子转换为 “山羊拉丁文(Goat Latin)”(一种类似于 猪拉丁文 - Pig Latin 的虚构语言)。山羊拉丁文的规则如下:

如果单词以元音开头('a', 'e', 'i', 'o', 'u'),在单词后添加"ma"。
例如,单词 "apple" 变为 "applema" 。
如果单词以辅音字母开头(即,非元音字母),移除第一个字符并将它放到末尾,之后再添加"ma"。
例如,单词 "goat" 变为 "oatgma" 。
根据单词在句子中的索引,在单词最后添加与索引相同数量的字母'a',索引从 1 开始。
例如,在第一个单词后添加 "a" ,在第二个单词后添加 "aa" ,以此类推。
返回将 sentence 转换为山羊拉丁文后的句子。

示例 1:

输入:sentence = "I speak Goat Latin"
输出:"Imaa peaksmaaa oatGmaaaa atinLmaaaaa"
示例 2:

输入:sentence = "The quick brown fox jumped over the lazy dog"
输出:"heTmaa uickqmaaa rownbmaaaa oxfmaaaaa umpedjmaaaaaa overmaaaaaaa hetmaaaaaaaa azylmaaaaaaaaa ogdmaaaaaaaaaa"
 

提示:

1 <= sentence.length <= 150
sentence 由英文字母和空格组成
sentence 不含前导或尾随空格
sentence 中的所有单词由单个空格分隔

Java版本:

class Solution {public String toGoatLatin(String sentence) {//定义结果变量String res = "";//使用split把句子分成单词String[] arr = sentence.split(" ");//遍历字符串数组for(int i = 0; i < arr.length; i++) {String temp = arr[i];//获取每个单词的第一个字母String one = temp.substring(0,1);//如果单词是元音字母(不区分大小写)if(one.equalsIgnoreCase("a")|| one.equalsIgnoreCase("e") || one.equalsIgnoreCase("i") || one.equalsIgnoreCase("o") || one.equalsIgnoreCase("u")) {temp += "ma";}else {//不是元音字母temp = temp.substring(1,temp.length()) + one;temp += "ma";}//单词在句子中的索引,因为是从1开始,所以要加1int index = 1 + i;//在单词后面添加 afor(int j = 1; j <= index; j++) {temp += "a";}//添加到结果中res += temp;//如果不是最后一个单词,每次添加完要加空格if(i != arr.length-1) {res += " ";}}//返回结果return res;}
}

c语言版

#define MAX_SIZE 2000 //1000长度不够,得稍微长一点
//判断是否是元音
bool check(char *str){char charr[5] = {'a','e','i','o','u'};for(int i = 0; i < 5; i++){if(charr[i] == tolower(str[0])){return true;}}return false;
}//字符串调换位置void reverse(char *str){int len = strlen(str);char temp = str[0];for(int i = 0; i < len - 1; i++){str[i] = str[i+1];}str[len-1] = temp;}char * toGoatLatin(char * sentence){char *res = malloc(sizeof(char)*MAX_SIZE);memset(res,0,sizeof(char)*MAX_SIZE);int i = 0;int len = strlen(sentence);int charIndex = 1; //第几个单词//遍历字符串,根据空格分隔单词char split[2] = " ";char *token = strtok(sentence,split);//分割单词while(token != NULL){//1.判断首字母是否是辅音,如果是辅音处理一下,元音不愿处理if(!check(token)){//处理辅音reverse(token);}//2.添加ma到字符串结尾sprintf(res,"%s%s%s",res,token,"ma");//添加到结果字符串中,并在末尾添加ma//添加a到结尾char * tempa = (char*)malloc(sizeof(char)*(charIndex+1));for(i = 0; i < charIndex; i++){tempa[i] = 'a';}//没有终止符,sprintf拼接不了,必须是两个带终止符的字符串tempa[i] = '\0';sprintf(res,"%s%s%s",res,tempa," ");charIndex++;token = strtok(NULL,split);} //最后一个空格要删掉int index = strlen(res);res[index -1] = '\0';return res;
}

更多推荐

LeetCode每日一题 (824. 山羊拉丁文)

本文发布于:2024-03-04 04:09:31,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1708231.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:拉丁文   山羊   LeetCode

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!