zoukankan      html  css  js  c++  java
  • leetcode第12题--Integer to Roman

    Problem:

    Given an integer, convert it to a roman numeral.

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

    把阿拉伯数字转换为罗马数字输出。百度一下对应的 I V X L C D M,代表1,5,10,50,100,500,1000 然后写一个子函数,输入数字和相应的位数级别,如个位为level 1,千为4.因为最多不会超过四千。所以可以如下。注意了,string用法很好,直接加就可以。

    class Solution {
    private:
    string corRoman(int val, int level)
    {
        string base, media, large;
        string s = "";
        if (level == 1) // 个位
        {
            base = "I";
            media = "V";
            large = "X";
        }
        else if (level == 2)
        {
            base = "X";
            media = "L";
            large = "C";
        }
        else if (level == 3)
        {
            base = "C";
            media = "D";
            large = "M";
        }
        else
        {
            base = "M";
        }
        if (val == 0)
            return "";
        if( val < 4)
        {
            for ( int i = 0; i < val; i++)
                s += base;
            return s;
        }
        if (val == 4)
        {
            return base + media;
        }
        if (val < 9)
        {
            s = media;
            for (int i = 5; i < val; i++)
                s+=base;
            return s;
        }
        return base + large;
    }
    public:
    string intToRoman(int num)
    {
        string s;
        int a;
        for (int i = 4; i > 0; i-- )
        {
            a = num/pow(10,i - 1);
            num %= (int)pow(10, i - 1);
            s+=corRoman(a,i);
        }
        return s;
    }
    };

    这样就Accept了。

  • 相关阅读:
    hdu4273Rescue(三维凸包重心)
    hdu4449Building Design(三维凸包+平面旋转)
    hdu3847Trash Removal(凸包)
    CodeForces 166B (凸包)
    机器学习文章导航
    梯度下降法深入
    插值法
    离散系统频域分析
    离散系统时域分析
    连续系统频域分析
  • 原文地址:https://www.cnblogs.com/higerzhang/p/4025506.html
Copyright © 2011-2022 走看看