lintcode-418-整数转罗马数字
418-整数转罗马数字
给定一个整数,将其转换成罗马数字。
返回的结果要求在1-3999的范围内。说明
什么是 罗马数字?
- https://en.wikipedia.org/wiki/Roman_numerals
- https://zh.wikipedia.org/wiki/罗马数字
- http://baike.baidu.com/view/42061.htm
样例
4 -> IV
12 -> XII
21 -> XXI
99 -> XCIX更多案例,请戳 http://literacy.kent.edu/Minigrants/Cinci/romanchart.htm
标签
字符串处理
思路
罗马字符的基本字符有:I、V、X、L、C、D、M
相应的阿拉伯数字表示为:1、5、10、50、100、500、1000
记数方法如下
- 相同的数字连写、所表示的数等于这些数字相加得到的数、如:Ⅲ=3;
- 小的数字在大的数字的右边、所表示的数等于这些数字相加得到的数、 如:Ⅷ=8、Ⅻ=12;
- 小的数字(限于 I、X 和 C)在大的数字的左边、所表示的数等于大数减小数得到的数、如:Ⅳ=4、Ⅸ=9;
- 正常使用时、连写的数字重复不得超过三次;
- 在一个数的上面画一条横线、表示这个数扩大 1000 倍。
有两条须注意掌握:
- 基本数字 Ⅰ、X 、C 中的任何一个、自身连用构成数目、或者放在大数的右边连用构成数目、都不能超过三个;放在大数的左边只能用一个;
- 不能把基本数字 V 、L 、D 中的任何一个作为小数放在大数的左边采用相减的方法构成数目;放在大数的右边采用相加的方式构成数目、只能使用一个;
code
class Solution {
public:
    /*
     * @param n: The integer
     * @return: Roman representation
     */
    string intToRoman(int n) {
        // write your code here
        if (n < 1 || n> 3999) {
            return "";
        }
        char* c[4][10] = {
            { "","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 roman;
        roman.append(c[3][n / 1000 % 10]);
        roman.append(c[2][n / 100 % 10]);
        roman.append(c[1][n / 10 % 10]);
        roman.append(c[0][n % 10]);
        return roman;
    }
};
lintcode-418-整数转罗马数字的更多相关文章
- lintcode :Integer to Roman 整数转罗马数字
		题目 整数转罗马数字 给定一个整数,将其转换成罗马数字. 返回的结果要求在1-3999的范围内. 样例 4 -> IV 12 -> XII 21 -> XXI 99 -> XC ... 
- LeetCode 12 Integer to Roman (整数转罗马数字)
		题目链接: https://leetcode.com/problems/integer-to-roman/?tab=Description String M[] = {"", ... 
- LeetCode:整数转罗马数字【12】
		LeetCode:整数转罗马数字[12] 题目描述 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 10 ... 
- Leetcode12--->Integer to Roman(整数转换为罗马数字)
		题目: 给定一个整数,将其转换为罗马数字; 题目很简单,主要是依靠整数和罗马数字的对应表: I= 1:V= 5: X = 10: L = 50: C = 100: D = 500: M = 1000 ... 
- [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 ... 
- Java实现 LeetCode 12 整数转罗马数字
		12. 整数转罗马数字 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 ... 
- LeetCode刷题笔记 - 12. 整数转罗马数字
		学好算法很重要,然后要学好算法,大量的练习是必不可少的,LeetCode是我经常去的一个刷题网站,上面的题目非常详细,各个标签的题目都有,可以整体练习,本公众号后续会带大家做一做上面的算法题. 官方链 ... 
- 【LeetCode】12. 整数转罗马数字
		12. 整数转罗马数字 知识点:字符串 题目描述 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 100 ... 
- leetcode 13. 罗马数字转整数 及 12. 整数转罗马数字
		13. 罗马数字转整数 问题描述 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如,罗马数 ... 
- [LintCode] Roman to Integer 罗马数字转化成整数
		Given a roman numeral, convert it to an integer. The answer is guaranteed to be within the range fro ... 
随机推荐
- Shellinabox on centos6.9
			介绍 一款实用的web linux终端, 并且保证操作安全性(屏蔽root用户) 下面以centos6.9为例 安装 首先安装epel仓库,再安装shellinabox yum -y install ... 
- Opencv3.0-python: 编译报错color.cpp:7456: error: (-215) scn == 3 || scn == 4 的解决方案
			结合Opencv3.0读取视频时,出现报错:C:\projects\opencv-python\opencv\modules\imgproc\src\color.cpp:11111: error: ( ... 
- 20155239 2016-2017-2 《Java程序设计》第10周学习总(2017-04-22 16:26
			教材学习 1.基本概念划分 OIS的七层协议: 应用层.表示层.会话层.运输层.网络层.数据链路层.物理层. OIS的五层协议: 应用层.运输层.网络层.数据链路层.物理层. 由下往上介绍如下: 2. ... 
- 2016-2017-2 20155302 实验四 Android 开发基础
			2016-2017-2 20155302 实验四 Android 开发基础 实验内容 1.下载和安装Android Studio 2.学会使用Android Studio进行简单的Android开发 ... 
- 初步安装配置虚拟机、Ubuntu、git、vim、码云项目
			内容 虚拟机软件:Oracle VM VirtualBox 系统:Ubuntu 配置:git:码云;vim 过程 下载安装VirtualBox.ubuntu 根据链接-- 基于VirtualBox安装 ... 
- 【转载】DXUT11框架浅析(4)--调试相关
			原文:DXUT11框架浅析(4)--调试相关 DXUT11框架浅析(4)--调试相关 1. D3D8/9和D3D10/11的调试区别 只要安装了DXSDK,有个调试工具DirectX ControlP ... 
- 【转载】Direct3D基础知识
			原文:Direct3D基础知识 重新从头开始学习DX,以前太急于求成了,很多基础知识都没掌握就开始写程序了,结果出了问题很难解决. 1. D3D体系结构 D3D与GDI处与同一层次,区 ... 
- SQL优化避免索引失效
			Oracle 索引的目标是避免全表扫描,提高查询效率,但有些时候却适得其反.例如一张表中有上百万条数据,对某个字段加了索引,但是查询时性能并没有什么提高,这可 能是 oracle 索引失效造成的.or ... 
- abp  指定方法不生成api
			方法上面添加RemoteServiceAttribute特性 
- javaweb(二十)——JavaBean总结
			一.什么是JavaBean JavaBean是一个遵循特定写法的Java类,它通常具有如下特点: 这个Java类必须具有一个无参的构造函数 属性必须私有化. 私有化的属性必须通过public类型的方法 ... 
