您的位置:首页 > 其它

010 leetcode Integer to Roman

2015-08-25 13:47 387 查看
转换起来还比较麻烦,按照每个位来转化,先从最后面开始。

如果这一位在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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: