@author: ZZQ

@software: PyCharm

@file: Luoma2Int.py

@time: 2018/9/16 17:06

要求: 罗马数字转数字

字符 数值

I 1

V 5

X 10

L 50

C 100

D 500

M 1000

罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。

27 写做 XXVII, 即为 XX + V + II 。

通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,

例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。

同样地,数字 9 表示为 IX。这个特殊的规则只适用于以下六种情况:

1) I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。

2) X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。

3) C 可以放在 D (500) 和 M (1000) 的左边,来表示 400 和 900。

思路: 每次先将当前罗马数字表示的数值加上,然后判断后面跟的是不是六种特殊情况之一,如果是,则减去二倍的当前罗马数字表示的数值。



class Solution():
def __init__(self):
pass def str2int(self, n):
if n == 'I':
return 1
if n == 'V':
return 5
if n == 'X':
return 10
if n == 'L':
return 50
if n == 'C':
return 100
if n == 'D':
return 500
if n == 'M':
return 1000 def romanToInt(self, s):
"""
:type s: str
:rtype: int
"""
roman_len = len(s)
value = 0
currstr = ''
for i in range(0, roman_len):
value += self.str2int(s[i])
if currstr == 'I' and s[i] == 'V':
value += - 2 * self.str2int(currstr)
if currstr == 'I' and s[i] == 'X':
value += - 2 * self.str2int(currstr)
if currstr == 'X' and s[i] == 'L':
value += - 2 * self.str2int(currstr)
if currstr == 'X' and s[i] == 'C':
value += - 2 * self.str2int(currstr)
if currstr == 'C' and s[i] == 'D':
value += - 2 * self.str2int(currstr)
if currstr == 'C' and s[i] == 'M':
value += - 2 * self.str2int(currstr)
currstr = s[i]
return value if __name__ == "__main__":
x = "IX"
answer = Solution()
print answer.romanToInt(x)

Leetcode题库——13.罗马数字转整数的更多相关文章

  1. LeetCode题库13. 罗马数字转整数(c++实现)

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

  2. Leetcode题库——8.字符串转为整数【##】

    @author: ZZQ @software: PyCharm @file: myAtoi.py @time: 2018/9/20 20:54 要求:实现 atoi,将字符串转为整数. 1)根据需要丢 ...

  3. C#版 - Leetcode 13. 罗马数字转整数 - 题解

    C#版 - Leetcode 13. 罗马数字转整数 - 题解 Leetcode 13. Roman to Integer 在线提交: https://leetcode.com/problems/ro ...

  4. LeetCode 13. 罗马数字转整数(Roman to Integer)

    13. 罗马数字转整数 13. Roman to Integer 题目描述 罗马数字包含以下七种字符: I,V,X,L,C,D 和 M. 字符        数值  I           1  V  ...

  5. Java实现 LeetCode 13 罗马数字转整数

    13. 罗马数字转整数 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 ...

  6. 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 例如,罗马数 ...

  7. 13. 罗马数字转整数----LeetCode

    13. 罗马数字转整数 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 ...

  8. leetcode算法13.罗马数字转整数

    哈喽!大家好,我是[学无止境小奇],一位热爱分享各种技术的博主! [学无止境小奇]的创作宗旨:每一条命令都亲自执行过,每一行代码都实际运行过,每一种方法都真实实践过,每一篇文章都良心制作过. [学无止 ...

  9. leetcode题库

    leetcode题库 #题名题解通过率难度出现频率  1 两数之和     46.5%简单2 两数相加     35.5%中等3 无重复字符的最长子串     31.1%中等4 寻找两个有序数组的中位 ...

随机推荐

  1. C语言中堆内存的开辟和释放与内存处理函数

    C语言动态分配内存,malloc的出现就是来弥补静态内存分配的缺点 比如说我们在定义数组的时候,数组的长度必须是一个常量,不能改变的值,假如我事先定义了数组,一旦业务需求发生改变,那么这个数组就不能再 ...

  2. 目标反射回波检测算法及其FPGA实现(准备篇): 用Verilog-HDL状态机控制硬件接口

    基于FPGA的目标反射回波检测算法及其实现(准备篇) :用Verilog-HDL状态机控制硬件接口 前段时间,开发了一个简单的目标反射回波信号识别算法,我会分几篇文章分享这个基于FPGA的回波识别算法 ...

  3. spring-data-jpa快速入门(一)——整合阿里Druid

    一.概述 官网:https://projects.spring.io/spring-data-jpa/ 1.什么是spring-data-jpa Spring Data JPA, part of th ...

  4. pwd的实现20155301

    pwd的实现 任务要求: 1) 学习pwd命令 2) 研究pwd实现需要的系统调用(man -k; grep),写出伪代码 3) 实现mypwd 4) 测试mypwd 实现过程 1)首先查看是否有有用 ...

  5. PostgreSQL的hook机制初步学习

    磨砺技术珠矶,践行数据之道,追求卓越价值 回到上一级页面:PostgreSQL内部结构与源代码研究索引页    回到顶级页面:PostgreSQL索引页 本文的目的一是为了备忘,二是为了抛砖引玉,希望 ...

  6. PPAS可以安装分区表

    磨砺技术珠矶,践行数据之道,追求卓越价值 回到上一级页面: PostgreSQL基础知识与基本操作索引页     回到顶级页面:PostgreSQL索引页 [作者 高健@博客园  luckyjackg ...

  7. 如何搭建openvpn

    一.什么是openvpn Openvpn是一款基于openssl的开源vpn软件,它可以很好的运行在linux及windows各发行版本中,它的核心技术是虚拟网卡,其实它更像是一个底层的网卡驱动软件, ...

  8. dos下edit编辑器的快捷命令一览

    Home Move cursor to the beginning of the line currently on. End Move cursor to the end of the line c ...

  9. pandas:对字符串类型做差分比较

    1. 问题需求 某种行为最常发生时段.最少发生时段与X天前是否一致 需求变形:判断上下行数据是否一致 2. 预备知识 2.1 Series.ne(Series) 判断两个Series是否相等 impo ...

  10. Openstack入门篇(十三)之云主机创建

    1.知识回顾与端口总结 service 功能 MySQL 为各个服务提供数据存储 RabbitMQ 为各个服务之间通信提供交通枢纽 Keystone 为各个服务器之间通信提供认证和服务注册 Glanc ...