Entero Leetcode los números romanos de transferencia

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;
    }
};
Publicado 85 artículos originales · ganado elogios 0 · Vistas 372

Supongo que te gusta

Origin blog.csdn.net/weixin_38312163/article/details/105062446
Recomendado
Clasificación