《LeetBook》leetcode题解(12):Integer to Roman[M]
我现在在做一个叫《leetbook》的免费开源书项目,力求提供最易懂的中文思路,目前把解题思路都同步更新到gitbook上了,需要的同学可以去看看
书的地址:https://hk029.gitbooks.io/leetbook/
012. Integer to Roman[M]
问题
Given an integer, convert it to a roman numeral.
Input is guaranteed to be within the range from 1 to 3999.
思路
分析罗马数字的规律:
| Symbol | Value | 
|---|---|
| I | 1 | 
| V | 5 | 
| X | 10 | 
| L | 50 | 
| C | 100 | 
| D | 500 | 
| M | 1,000 | 
上面是罗马数字所有的符号。 
罗马数字的规则: 
一般情况下,从左到右从大到小排,字母代表的数字累加。 
比如:
XII = 12
MDCCLXVI= 1000+500+100+100+50+10+5+1
但是有特殊情况,就是,如果数字的范围在大数减小数的范围内,则会出现小数在大数前面的情况,代表(大数-小数)
IV = 5-1
IX= 10 - 1 = 9
XL = 50-10 = 40
| Symbol | Value | 
|---|---|
| IV | 4 | 
| IX | 9 | 
| XL | 40 | 
| XC | 90 | 
| CD | 400 | 
| CM | 900 | 
思路1——循环
一旦把所有可能的情况符号情况都列举出来了,就好做了。 
我们现在拿到一个数N
- 我们就去表里面找不超过它的最大的数x,
- 然后把它入我们的输出字符串中,然后将数N-=x,
- 继续执行这个操作,直到N=0
public class Solution {
    public String intToRoman(int num) {
        int list[] = {1000,900,500,400,100,90,50,40,10,9,5,4,1};
        String chars[] = {"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"};
        int i = 0;
        String out="";
        while(num > 0)
        {
            for(;i < list.length;i++)
                if(num >= list[i])
                    break;
            out+=chars[i];
            num -= list[i];
        }
        return out;
    }
}思路2——查表
还有个更极端的方案,就是,把每位上可能出现的情况都列举出来,剩下的,只用查表就行了。
public class Solution {
  public static String intToRoman(int num) {
        String M[] = {"", "M", "MM", "MMM"};
        String C[] = {"", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"};
        String X[] = {"", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"};
        String I[] = {"", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"};
        return M[num/1000] + C[(num%1000)/100] + X[(num%100)/10] + I[num%10];
    }
}
《LeetBook》leetcode题解(12):Integer to Roman[M]的更多相关文章
- LeetCode题解 #12 Integer to Roman
		题目大意:给定数字,将其转化为罗马数字的形式 罗马数字其实只有 I V X L C D M 这几种形式,其余均为组合的,去百度了解一下就ok. 所以首先想到的就是,将个.十.百.千位的数字构造出来,然 ... 
- 【LeetCode】12. Integer to Roman (2 solutions)
		Integer to Roman Given an integer, convert it to a roman numeral. Input is guaranteed to be within t ... 
- 【LeetCode】12. Integer to Roman 整数转罗马数字
		作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 个人公众号:负雪明烛 本文关键词:roman, 罗马数字,题解,leetcode, 力扣, ... 
- 【一天一道LeetCode】#12 Integer to Roman
		一天一道LeetCode系列 (一)题目 Given an integer, convert it to a roman numeral. Input is guaranteed to be with ... 
- 【LeetCode】12. Integer to Roman 整型数转罗马数
		题目: Given an integer, convert it to a roman numeral. Input is guaranteed to be within the range from ... 
- 【leetcode】12. Integer to Roman
		题目描述: Given an integer, convert it to a roman numeral. Input is guaranteed to be within the range fr ... 
- LeetCode:12. Integer to Roman(Medium)
		1. 原题链接 https://leetcode.com/problems/integer-to-roman/description/ 2. 题目要求 (1) 将整数转换成罗马数字: (2) 整数的范 ... 
- leetCode练题——12. Integer to Roman
		1.题目 12. Integer to Roman Roman numerals are represented by seven different symbols: I, V, X, L, C, ... 
- Leetcode 12——Integer to Roman
		12.Integer to Roman Given an integer, convert it to a roman numeral. Input is guaranteed to be withi ... 
随机推荐
- DW2.0
			一.DW2.0从企业的角度,吸引企业的原因: 1.数据仓库基础设施的成本不再持续增长.在第一代数据仓库中,技术基础设施的成本是不断增长的,随着数据量的增长,基础设施的成本会以指数级增长.但是使用DW2 ... 
- SqlLocalDB 的一些常用命令行
			Once installed, you can interact with SqlLocalDb using the command line. The following will tell you ... 
- [label][JavaScript][The Defined Guide of JavaScript] 变量的作用域
			变量的作用域 一个变量的作用域(scope)是程序中定义这个变量的区域. 全局(global)变量的作用域(scope)是全局性的,即在JavaScript代码中,它处处都有定义. 而在函数之内 ... 
- iOS设备抓包终极解决方案(支持https)
			http://bbs.chinapyg.com/forum.php?mod=viewthread&tid=74423&extra=page%3D1%26filter%3Dtypeid% ... 
- [ruby]rubyGem出现ERROR:  Could not find a valid gem时的处理方法
			场景: 想安装SASS的时候,打开cmd,输入gem install sass的时候却出现了: ERROR: Could not find a valid gem 'sass' (>= 0), ... 
- Beginning Asp.Net Security 读书笔记-----XSS
			几个月前通过Veracode对代码进行动态和静态安全扫描,扫出了数以千计的安全bug,基本上都是top 10的,安全漏洞. 其中CWE80,CWE601数量最多.具体CWE的定义可参考http://c ... 
- iOS错误 - too many open files (error = 24)
			碰到这个错误是在用 UIImageView 显示图片的时候.UIImage 用的是 imageNamed 方法.错误原因是打开了太多的文件.应该是太多文件的打开导致了 UIImage 的 cache ... 
- ASP.NET Core使用NLog记录日志
			1.根目录新建nlog.config配置文件 <?xml version="1.0"?> <nlog xmlns="http://www.nlog-pr ... 
- LockBox的安装
			LockBox是一套加密解密库,下载地址:http://sourceforge.net/projects/tplockbox/ 我的安装的操作系统:win7 64位 安装步骤如下: 一,安装: 安装时 ... 
- 2018-2019-2 20165219《网络对抗技术》Exp0 Kali安装 Week1
			2018-2019-2 20165219<网络对抗技术>Exp0 Kali安装 Week1 安装Kali 在官网下载,然后将解压后的文件导入 输入username和password 共享文 ... 
