Integer to Roman

class Solution {
public:
string cc(int num){
	if(num<10&&num>=0){
		switch(num){
		case 0: return "";break;
		case 1: return "I";break;
		case 2: return "II";break;
		case 3: return "III";break;
		case 4: return "IV";break;
		case 5: return "V";break;
		case 6: return "VI";break;
		case 7: return "VII";break;
		case 8: return "VIII";break;
		case 9: return "IX";break;
		}
	}
	else if(num<100&&num>9){
		switch(num){
	    case 10: return"X";break;
		case 20: return"XX";break;
		case 30: return"XXX";break;
		case 40: return"XL";break;
		case 50: return"L";break;
		case 60: return"LX";break;
		case 70: return"LXX";break;
		case 80: return"LXXX";break;
		case 90: return"XC";break;
		}
	}
	else if(num<1000&&num>99){
		switch(num){
	    case 100: return"C";break;
		case 200: return"CC";break;
		case 300: return"CCC";break;
		case 400: return"CD";break;
		case 500: return"D";break;
		case 600: return"DC";break;
		case 700: return"DCC";break;
		case 800: return"DCCC";break;
		case 900: return"CM";break;
		}
	}
	else if(num<4000&&num>999){
		switch (num){
	    case 1000: return"M";break;
		case 2000: return"MM";break;
		case 3000: return"MMM";break;
		}
	}
}
string intToRoman(int num) {

    map<int,char> roman;
	roman[1]='I';
	roman[5]='V';
	roman[10]='X';
	roman[50]='L';
	roman[100]='C';
	roman[500]='D';
	roman[1000]='M';
	//每个位肢解
	int yz = 1;
	string res;
	while(num/yz){
		stringstream ss;
		int temp = num%(yz*10)/yz*yz;
		yz *=10;
		ss<<cc(temp);
		res = ss.str()+res;
	}
	return res;
}
};

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值