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等等表示的,其中
I = ;
V = ;
X = ;
L = ;
C = ;
D = ;
M = ;
接下来应该是V开始的重复,但是上面要加一个横线,表示对应数字的1000倍。
而且对于某位上(以个位为例), – ,应该是:I,II,III,IV,V,VI,VII,VIII,IX
而,对于百位上, – ,应该是:C,CC,CCC,CD,D,DC,DCC,DCCC,CM
依此类推。
有一点比较有意思,那就是IV,正统的写法是IIII(写程序倒是容易些)。后来简写为IV,但是由于IV也是朱皮特神的名字,为了不让神的名字看起来像普通数字,这种简写遭到了很多人的抵制。
class Solution {
public:
void appendNumtoRoman(int digit, string &roman, char *symbol)
{
if(digit == ) return ;
if(digit <= ){
roman.append(digit, symbol[]);
}else if( digit == ){
roman.append(, symbol[]);
roman.append(, symbol[]);
}else if(digit == ){
roman.append(,symbol[]);
}else if(digit <= ){
roman.append(, symbol[]);
roman.append(digit - , symbol[]);
}else if(digit == ){
roman.append(, symbol[]);
roman.append(, symbol[]);
}
}
string intToRoman(int num) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
char symbol[]={'I','V','X','L','C','D','M','v','x'};
string roman = "";
int scale = ; for(int i = ; i >= ; i -= )
{
int digit = num /scale ;
appendNumtoRoman(digit, roman, symbol+i);
num = num% scale;
scale /= ;
} return roman ;
}
};

转自: http://blog.unieagle.net/2012/09/29/leetcode%E9%A2%98%E7%9B%AE%EF%BC%9Ainteger-to-roman/

LeetCode_Integer to Roman的更多相关文章

  1. [LeetCode] Roman to Integer 罗马数字转化成整数

    Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 t ...

  2. [LeetCode] Integer to Roman 整数转化成罗马数字

    Given an integer, convert it to a roman numeral. Input is guaranteed to be within the range from 1 t ...

  3. 【leetcode】Roman to Integer

    题目描述: Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range fr ...

  4. [Leetcode] Roman to Integer

    Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 t ...

  5. Integer to Roman -- LeetCode 012

    Given an integer, convert it to a roman numeral. Input is guaranteed to be within the range from 1 t ...

  6. 【LeetCode】Roman to Integer & Integer to Roman

    Roman to Integer Given a roman numeral, convert it to an integer. Input is guaranteed to be within t ...

  7. No.013:Roman to Integer

    问题: Given a roman numeral, convert it to an integer.Input is guaranteed to be within the range from ...

  8. 【leetcode】Integer to Roman

    Integer to Roman Given an integer, convert it to a roman numeral. Input is guaranteed to be within t ...

  9. 【leetcode】Integer to Roman & Roman to Integer(easy)

    Roman to Integer Given a roman numeral, convert it to an integer. Input is guaranteed to be within t ...

随机推荐

  1. ubuntu vim YCM

    http://blog.sina.com.cn/s/blog_499386b00100rxm1.html http://www.cnblogs.com/junnyfeng/p/3633697.html

  2. cf B. Resort

    http://codeforces.com/contest/350/problem/B 从旅馆开始倒着找到一个点它的出度>1的位置为止,比较长度大小,找到一个长度最大的即可. #include ...

  3. 《Programming WPF》翻译 第5章 3.命名属性

    原文:<Programming WPF>翻译 第5章 3.命名属性 通过把同样的内嵌样式提升到资源中(正如第一章介绍的),我们可以给它一个名字,以及按名字使用它在我们的Button实例上, ...

  4. cf446C DZY Loves Fibonacci Numbers

    C. DZY Loves Fibonacci Numbers time limit per test 4 seconds memory limit per test 256 megabytes inp ...

  5. 工具:七牛云备份VPS服务器文件

    每一天,服务器上都会产生一系列的数据文件,有些文件不免具有重要性,但是如果我们只是简单的移动文件,那将不会具有很好的备份性,这里,我们借助Python实现对于文件的云端备份.      这个程序是我利 ...

  6. Unity 弹道轨迹

    using UnityEngine; using System.Collections; public class ProjectileTest : MonoBehaviour { public Ga ...

  7. hdu4506小明系列故事——师兄帮帮忙 (用二进制,大数高速取余)

    Problem Description 小明自从告别了ACM/ICPC之后,就開始潜心研究数学问题了,一则能够为接下来的考研做准备,再者能够借此机会帮助一些同学,尤其是美丽的师妹.这不,班里唯一的女生 ...

  8. FlashbackQuery:SCN与timestamp示例

    Flashback QueryFlashback 是ORACLE 自9i 就开始提供的一项特性,在9i 中利用oracle 查询多版本一致的特点,实现从回滚段中读取表一定时间内操作过的数据,可用来进行 ...

  9. Sql server Lock

    http://www.cnblogs.com/wuyifu/archive/2013/11/28/3447870.html

  10. Mob短信验证的具体使用

    原文著作权地址:http://www.jb51.net/article/84946.htm demo地址:http://git.oschina.net/lizhanqi/MobSMSDemo 一.前言 ...