Integer to Roman

来源:互联网 发布:搜索字幕的软件 编辑:程序博客网 时间:2024/06/15 01:32

Given an integer, convert it to a roman numeral.

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

此题找规律模拟操作,分析1-10的整数是如何构造出罗马数字的,然后再依葫芦画瓢,注意细节的处理。

class Solution {public:    string IntToR(int k, char mask[])    {        string Res = "";        if(k <= 3)        {            for(int i = 0; i < k; ++i)            {                Res.push_back(mask[0]);            }        }        else if(k == 4)        {            Res.push_back(mask[0]);            Res.push_back(mask[1]);        }        else if(k <= 8)        {            Res.push_back(mask[1]);            for(int i = 0; i < k - 5; ++i)            {                Res.push_back(mask[0]);            }        }        else if(k == 9)        {            Res.push_back(mask[0]);            Res.push_back(mask[2]);        }        return Res;    }        string intToRoman(int num) {          char mask[] = {'I', 'V', 'X', 'L', 'C', 'D', 'M'};          int i = 6;          int factor = 1000;          string Res = "";          while(num != 0)          {              int k = num / factor;              num = num % factor;              factor /= 10;              Res += IntToR(k, &mask[i]);              i -= 2;          }          return Res;    }};

0 0
原创粉丝点击