前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【leetcode】Integer to Roman

【leetcode】Integer to Roman

作者头像
阳光岛主
发布2019-02-19 11:28:26
2740
发布2019-02-19 11:28:26
举报
文章被收录于专栏:米扑专栏米扑专栏

Question : 

Given an integer, convert it to a roman numeral.

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

Anwser 1 :

代码语言:javascript
复制
class Solution {
public:
    string intToRoman(int num) {
        // Start typing your C/C++ solution below
        // DO NOT write int main() function    
        string res;
        
        string symbol[]={"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"};
        int value[]={1000,900,500,400,100,90,50,40,10,9,5,4,1};
        
	    int i = 0;
	    while(num != 0){
		    if(num >= value[i]){    // minus largest number
			    num -= value[i];
		    	res += symbol[i];
		    } else {
    	        i++;   
		    }
	    }

	    return res;
    }
};

Anwser 2 :

代码语言:javascript
复制
class Solution {
public:
    string intToRoman(int num) {
        // Start typing your C/C++ solution below
        // DO NOT write int main() function    
        char symbol[7] = {'I', 'V', 'X', 'L', 'C', 'D', 'M'};
        string res = "";
        
        int scale = 1000;
        for (int i = 6; i >= 0; i -= 2)
        {
            int digit = num / scale;
            num2roman(digit, res, symbol + i);
            num %= scale;
            scale /= 10;
        }
        
        return res;
    }
    
    void num2roman(int num, string& res, char symbols[])
    {
        if (num == 0)
            return;
        if (num <= 3)
            res.append(num, symbols[0]);
        else if (num == 4)
        {
            res.append(1, symbols[0]);
            res.append(1, symbols[1]);
        }
        else if (num <= 8)
        {
            res.append(1, symbols[1]);
            res.append(num - 5, symbols[0]);
        }
        else
        {
            res.append(1, symbols[0]);
            res.append(1, symbols[2]);
        }
    }
};
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2013年04月21日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档