栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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开始,所以要加1
			int index = 1 + i;
			//在单词后面添加 a
			for(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] = '';
		sprintf(res,"%s%s%s",res,tempa," ");

		charIndex++;
		token = strtok(NULL,split);
	} 
	//最后一个空格要删掉
	int index = strlen(res);
	res[index -1] = '';
	return res;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/827951.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号