Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenDocCN
awesome-algorithm
提交
417a474b
A
awesome-algorithm
项目概览
OpenDocCN
/
awesome-algorithm
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
A
awesome-algorithm
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
417a474b
编写于
2月 22, 2018
作者:
K
KEQI HUANG
提交者:
GitHub
2月 22, 2018
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Update 012._Integer_to_Roman.md
上级
67f0ce83
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
1 addition
and
32 deletion
+1
-32
012._Integer_to_Roman.md
012._Integer_to_Roman.md
+1
-32
未找到文件。
012._Integer_to_Roman.md
浏览文件 @
417a474b
...
...
@@ -25,43 +25,12 @@ Medium
I V X L C D M
```
组合是这种方式
```
1 2 3 4 5 6 7 8 9
I II III IV V VI VII VIII IX
10 20 30 40 50 60 70 80 90
X XX XXX XL L LX LXX LXXX XC
100 200 300 400 500 600 700 800 900
C CC CCC CD D DC DCC DCCC CM
```
可以看出来,这个进位或者组合是4和9的地方进位的,比如4是加上了I然后到V,9是加上了I到X。所以题目要限制数字在1-3999之间。
然后就去谷歌罗马数字最大能表示多少,看到了一个更好的总结,不过是可以更大的,数字上面加bar.
via
<http://www.cnblogs.com/cacique/archive/2012/02/23/2364377.html>
下面是几个通常的规则来构成罗马数字:
-
大部分时候用字符相叠加来表示数字。I是1, II是2, III是3。VI是6(挨个看来,是“5 和 1”的组合),VII是7,VIII是8。
-
含有10的字符(I,X,C和M)最多可以重复出现三个。为了表示4,必须用同一位数的下一个更大的数字5来减去一。不能用IIII来表示4,而应该是IV(意思是比5小1)。40写做XL(比50小10),41写做XLI,42写做XLII,43写做XLIII,44写做XLIV(比50小10并且比5小1)。
-
有些时候表示方法恰恰相反。为了表示一个中间的数字,需要从一个最终的值来减。比如:9需要从10来减:8是VIII,但9确是IX(比10小1),并不是VIII(I字符不能重复4次)。90是XC,900是CM。
-
表示5的字符不能在一个数字中重复出现。10只能用X表示,不能用VV表示。100只能用C表示,而不是LL。
-
罗马数字是从左到右来计算,因此字符的顺序非常重要。DC表示600,而CD完全是另一个数字400(比500小100)。CI是101,IC不是一个罗马数字(因为你不能从100减1,你只能写成XCIX,表示比100小10,且比10小1)。
**规则总结: 左减右加 加减时位数和被加减数相差位数最大为一(两位数可加减一位数 三位数只能加减两位数) 从左向右计数**
见
[
Leetcode 013
](
)
所以想着4,9这块需要特殊处理一下,但是看到了一个很棒的
[
算法
](
https://gist.github.com/imilu/00f32c61e50b7ca296f91e9d96d8e976
)
AC代码
```
python
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录