010 leetcode Integer to Roman

转换起来还比较麻烦,按照每个位来转化,先从最后面开始。

如果这一位在1~3之间,那么就把这个位的罗马字符添到字符串前面;

如果这一位等于4,那么就把当前罗马字符+这个位前,一位的罗马字符 + 字符串连接起来;

如果这一位在5~8之间,那么就把这个位置前面一位的罗马字符 + 当前罗马字符 + 字符串连接起来;

如果这一位等于9,那么就把当前字符 +前两位字符 +字符串连接起来;

代码如下,耗时32ms。

string intToRoman(int num) 
{
	if (num < 1 || num > 3999) return NULL;
	int bit = 0;
	int temp = num;
	string result;
	while (temp != 0)
	{
		int dealt = temp % 10;
		switch (dealt)
		{
		case 3:
			result = roman[bit] + result;
		case 2:
			result = roman[bit] + result;
		case 1:
		{
			result = roman[bit] + result;
			break;
		}
		case 4:
		{
			result = roman[bit + 1] + result;
			result = roman[bit] + result;
			break;
		}
		case 8:
			result = roman[bit] + result;
		case 7:
			result = roman[bit] + result;
		case 6:
			result = roman[bit] + result;
		case 5:
			result = roman[bit + 1] + result;
			break;
		case 9:
			result = roman[bit + 2] + result;
			result = roman[bit] + result;
			break;
		default:
			break;
		}
		bit += 2;
		temp /= 10;
	}
	return result;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值