título Descripción
Dado un número entero, convertirlo a un número romano. Para asegurarse de que la entrada está en el intervalo de 1 a 3.999 mil.
pensamiento
En primer lugar, la conversión digital de las cadenas, uno por uno proceso, la función de llamada puede ayudar
código
class Solution {
public:
string Help(string s, int i, int len)
{
string record = "IVXLCDMT";
string res;
int number = s[i] - '0';
if (number>0)
{
int a = number / 5;
int b = number % 5;
if (b == 4)
{
res += record[(len - i) * 2 - 2];
res += record[(len - i) * 2 - 1 + a];
}
else
{
if (a == 1)
res += record[(len - i) * 2 - 1];
while (b > 0)
{
res += record[(len - i) * 2 - 2];
b--;
}
}
}
return res;
}
string intToRoman(int num) {
string res;
string s = to_string(num);
int len = s.length();
for (int i = 0; i< len; i++)
{
res += Help(s, i, len);
}
return res;
}
};