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;
}