Given an integer, convert it to a roman numeral.

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

题意:将整数转换成罗马数字,这里就需要对什么是罗马数字有一些了解。一下部分摘选于百度百科

计数方法:

1)相同的数字连写,所表示的数等于这些数字相加得到的数,如:III=3;

2)小的数字在大的数字的右边,所表示的数等于这些数字相加得到的数,如:VIII=8、XII=12;

3)小的数字(限于I、X、和C)在大的数字的左边,所表示的数等于大数减小数得到的数,如:IV=4、IX=9;

4)正常使用时,连写的数字重复不得超过三次;

5)在一个数的上面画一条横线,表示这个数扩大1000倍。

组数规则:

1)基本数字I、X、C中的任何一个、自身连用构成数目、或者放在大数的右边连用构成数目,都不能超过三个;放在大数的左边只能一个;

2)不能把基本数字V、L、D中的任何一个座位小数放在大数的左边采用相减的方法构成数目;放在大数的右边采用相加的方式构成数目只能用一个;

3)V和X的左边的小数子只能用I;

4)L和C的左边小数字只能用X;

5)D和M左边的小数字只能用C;

规则3~5可以理解为,放在左边的小数字只能是同一级别,额,好吧,具体含义得自己体会。

方法一:题中给出了整数的范围, 用罗马数字给出各个数字对应的表现形式,用二维向量表示。值得注意的是 “” 的位置,求罗马数字的过程可以表示为从个位、十位、百位、千位一步步的计算,在返回值res的求值中,+两段的顺序不能颠倒。代码如下:

 class Solution {
public:
string intToRoman(int num)
{
vector<vector<string>> strR=
{
{"", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"},
{"", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"},
{"", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"},
{"", "M", "MM", "MMM"}
}; string res="";
int row=;
while(num !=)
{
int col=num%;
res=strR[row][col]+res;  //注意顺序
row++;
num/=;
}
return res;
}
};

方法二:参考Grandyang的博客,使用贪婪算法的解法。建立表格,每次通过查找当前最大的数,减去在查找。和上面解法的区别在于,上面是将每个数量级上的整数一次性转成罗马数字,这个是有点像用天平秤东西一样,从大到小的一个个试。代码如下:

 class Solution {
public:
string intToRoman(int num)
{
string res;
vector<int> intVal{,,,,,,,,,,,,};
vector<string> strRoman{"M","CM","D","CD","C","XC","L","XL","X",
"IX","V","IV","I"}; for(int i=;i<intVal.size();++i)
{
while(num>=intVal[i])
{
num-=intVal[i];
res+=strRoman[i];
}
}
return res;
}
};

[Leetcode] Interger to roman 整数转成罗马数字的更多相关文章

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

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

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

    Roman numerals are represented by seven different symbols: I, V, X, L, C, D and M. Symbol Value I 1 ...

  3. 012 Integer to Roman 整数转换成罗马数字

    给定一个整数,将其转为罗马数字.输入保证在 1 到 3999 之间. 详见:https://leetcode.com/problems/integer-to-roman/description/ cl ...

  4. [LintCode] Integer to Roman 整数转化成罗马数字

    Given an integer, convert it to a roman numeral. The number is guaranteed to be within the range fro ...

  5. 【LeetCode】12. Integer to Roman 整数转罗马数字

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 个人公众号:负雪明烛 本文关键词:roman, 罗马数字,题解,leetcode, 力扣, ...

  6. Leetcode#13. Roman to Integer(罗马数字转整数)

    题目描述 罗马数字包含以下七种字符:I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 写做 II ,即 ...

  7. leetcode:Roman to Integer(罗马数字转化为罗马数字)

    Question: Given a roman numeral, convert it to an integer. Input is guaranteed to be within the rang ...

  8. lintcode :Integer to Roman 整数转罗马数字

    题目 整数转罗马数字 给定一个整数,将其转换成罗马数字. 返回的结果要求在1-3999的范围内. 样例 4 -> IV 12 -> XII 21 -> XXI 99 -> XC ...

  9. LeetCode OJ-- Integer to Roman @

    @表示有更优解法 https://oj.leetcode.com/problems/integer-to-roman/ 将自然数,转换成罗马数字,输入范围为 1 ~ 3999,因为罗马数没有0. 用一 ...

随机推荐

  1. MySQL必会

    SQL语言对大小写不敏感,但一般使用大.1.创建数据库 CREATE DATABASE test; 2.授予权限 CRANT ALL ON test.* to user(s); 3.使用指定数据库 U ...

  2. JavaScript之DOM查询

    DOM查询 - 通过具体的元素节点来查询 - 元素.getElementsByTagName() - 通过标签名查询当前元素的指定后代元素,返回数组 - 元素.childNodes - 获取当前元素的 ...

  3. MFC接收ShellExecute多个参数

    在应用程序开发过程中,我们经常需要带参数启动另一个执行程序,如何传递多个参数,如何解析多个参数呢?   传参数 传递参数可使用ShellExecute函数,示例如下: ShellExecute(NUL ...

  4. java入门---基础语法&基础常识&编码规范&命名规范

        一个Java程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作.下面简要介绍下类.对象.方法和实例变量的概念. 对象:对象是类的一个实例,有状态和行为.例如,一条狗是一个对 ...

  5. 设置Git 记住密码

    设置记住密码(默认15分钟): git config --global credential.helper cache 如果想自己设置时间,可以这样做: git config credential.h ...

  6. OrCAD设置原理图页面大小

    1. 右键要修改的原理图文件 2. 选择适合的尺寸

  7. SGU刷题之路,开始了

    0. 关于SGU的简介 SGU的网址是:acm.sgu.ru 向不了解的同学介绍一下SGU这个题库: 1. 题目难度很高,题目大多很经典. 2. 其数据范围很小,时间和空间要求也都很小,同时很精确.甚 ...

  8. Gradle下载及安装教程

    Gradle是基于Groovy语言的项目自动化建构工具,在使用Gradle之前常用的构建工具有Ant和Maven,使用这些工具我们可以用来管理项目依赖,打包,部署和发布等.使用Gradle我们将需要的 ...

  9. 自动化测试元素查找利器firepath介绍

    自动化测试查找元素和确定元素xpath路径是否正确在业界有个很好的工具就是firefox 浏览器的 firepath 问题: firefox 最新版本已经不支持firebug和firepath这两个插 ...

  10. Python 中的容器 collections

    写在之前 我们都知道 Python 中内置了许多标准的数据结构,比如列表,元组,字典等.与此同时标准库还提供了一些额外的数据结构,我们可以基于它们创建所需的新数据结构. Python 附带了一个「容器 ...