leetcode 12. Integer to Roman

如果对转换规则不清楚的童鞋可以点击:整型数与罗马数的转换规则

lz用的方法,最简单也最啰嗦,好像没有啥算法可言,一起学习学习

char* intToRoman(int num) {
    char *pNum = (char*)malloc(sizeof(char) * 100);
	char *digit[10] = { "", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX" };
	char *ten[10] = { "", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC" };
	char *hundred[10]= { "", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM" };
	char* thousand[4] = { "", "M", "MM", "MMM" };

	int number[3999];
	int numTmp = num;
	int count = 0, i = 0;
	
	while (numTmp != 0)
	{
		numTmp /= 10;
		count++;
	}
	int len = count;
	while (count > 0)
	{
		int tmp = num / pow(10, count - 1);
		number[i++] = tmp ;
		num = num - tmp * pow(10, count - 1);
		count--;
	}
	int j = 0;
		switch (len)
		{
		case 1: {
			pNum = digit[number[j]];
			break;
		}
		case 2: {
			strcat(pNum, ten[number[j]]);
			j++;
			strcat(pNum, digit[number[j]]);
			if (j >= len-1)
				break;
		}
		case 3: {
			strcat(pNum,hundred[number[j]]);//此处需要注意:使用strcat可以将所有的字符串连在一起,然后返回
			j++;
			strcat(pNum, ten[number[j]]);
			j++;
			strcat(pNum, digit[number[j]]);
			if (j >= len-1)
				break;
		}
		case 4: {
			strcat(pNum, thousand[number[j]]);
			j++;
			strcat(pNum,hundred[number[j]]);
			j++;
			strcat(pNum, ten[number[j]]);
			j++;
			strcat(pNum, digit[number[j]]);
			if(j>=len-1)
			   break;
		}
		}
		
	return pNum;
    
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值