【零基础刷Leetcode】13. Roman to Integer Python

1 篇文章 0 订阅
1 篇文章 0 订阅

13. Roman to Integer Python

边刷边记录,因为没有基础,所以很慢,总觉得自己可以写出来才证明自己懂了这题,有写的不对的地方,欢迎指正。转载请标明出处哦。

03/15/2018

原题链接:https://leetcode.com/problems/roman-to-integer/description/


翻译

定一个罗马数字,将其转成对应的整数。输入限制在1到3999之间。

思路

Leetcode上给了两个hints


Hint 1: 罗马数字与整数的对应表,我直接用dictionary表示了

Roman = { I:1, V:5, X:10, L:50, C:100, D:500, M:1000}

Hint 2: 转换的规则

  • 如果I(1)在 V(5) 或者 X(10) 之前, 减去1,例如:IV = 5-1=4, IX = 10-1=9
    也就是 I<V,I<X时,如果 I在 V或者X之前,就要减去I的值。反之如果I在V或X之后,则加上I的值, 例如:VI = 5+1 = 6
  • 如果X(10)在 L(50) 或者 C(100) 之前, 减去10,例如:CD = 50-10=40, CM = 100-10=90 也就是 X<L,X<C时,如果 X在 L或者C之前,就要减去X的值。反之如果X在L或C之后,则加上X的值, 例如:XL = 50+10 = 60

  • 如果C(100)在 D(500) 或者 M(1000) 之前, 减去10,例如:CD = 500-100=400, CM = 1000-100=900 也就是 C<D,C<M 时,如果 C在 D或者M之前,就要减去C的值。反之如果C在D或M之后,则加上C的值, 例如:DC = 500+100 = 600


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值