数字转换为罗马数字

Integer to Roman

https://leetcode.com/problems/integer-to-roman/

Given an integer, convert it to a roman numeral.

Input is guaranteed to be within the range from 1 to 3999.



#include "stdafx.h"
#include "map"
#include "string"
#include "vector"
using namespace std;


vector<unsigned int> v_buff;

class Solution {

public:


string covToqian(char charin)
{
string ret = "";
switch (charin)
{
case '1':
ret = "M";
break;
case '2':
ret = "MM";
break;
case '3':
ret = "MMM";
break;
default:
break;
}
return ret;
}


string covTobai(char charin)
{
string ret = "";
switch (charin)
{
case '1':
ret = "C";
break;
case '2':
ret = "CC";
break;
case '3':
ret = "CCC";
break;
case '4':
ret = "CD";
break;
case '5':
ret = "D";
break;
case '6':
ret = "DC";
break;
case '7':
ret = "DCC";
break;
case '8':
ret = "DCCC";
break;
case '9':
ret = "CM";
break;
default:
break;
}
return ret;
}


string covToshi(char charin)
{
string ret = "";
switch (charin)
{
case '1':
ret = "X";
break;
case '2':
ret = "XX";
break;
case '3':
ret = "XXX";
break;
case '4':
ret = "XL";
break;
case '5':
ret = "L";
break;
case '6':
ret = "LX";
break;
case '7':
ret = "LXX";
break;
case '8':
ret = "LXXX";
break;
case '9':
ret = "XC";
break;
default:
break;
}
return ret;
}
string covTogeshu(char charin)
{
string ret = "";
switch (charin)
{
case '1':
ret = "I";
break;
case '2':
ret = "II";
break;
case '3':
ret = "III";
break;
case '4':
ret = "IV";
break;
case '5':
ret = "V";
break;
case '6':
ret = "VI";
break;
case '7':
ret = "VII";
break;
case '8':
ret = "VIII";
break;
case '9':
ret = "IX";
break;
default:
break;
}
return ret;
}
    string intToRoman(int num) {
    char inputInt[5] = {0};
string inputInt2 = "";
string covered = "";
    sprintf(inputInt, "%d", num);
    inputInt2 = inputInt;
string::iterator itptr = inputInt2.begin();
switch (inputInt2.size())
{
case 4:  //如果是带有千位
covered +=  covToqian(*itptr);
covered +=  covTobai(*(++itptr));
covered +=  covToshi(*(++itptr));
covered +=  covTogeshu(*(++itptr));
break;
case 3:
covered +=  covTobai(*(itptr));
covered +=  covToshi(*(++itptr));
covered +=  covTogeshu(*(++itptr));
break;
case 2:
covered +=  covToshi(*(itptr));
covered +=  covTogeshu(*(++itptr));
break;
case 1:
covered +=  covTogeshu(*(itptr));
break;
}
return covered;
    }

};


int main(int argc, char* argv[])
{
int it = 0;
Solution sl;
char inputInt[5] = {0};
string inputInt2 = "";
string covered = "";
while (true)
{
printf("Please input number.\n");
scanf("%d", &it);
printf("Input number is %d\n", it);
covered = sl.intToRoman(it);
printf("output romar number is %s\n", covered.c_str());
}
return 1;
}



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值