13. Roman to Integer[E]罗马数字转整数
题目
Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
思路
在进行罗马数字转化为整数的过程中,由于罗马数字是按照从左往右从大到小的顺序排列,于是可以分析,当左边罗马数字对应的整数A比右边一个罗马数字对应的整数B小的时候,表示B-A。
利用map建立一个罗马数字与整数的对应映射,检查字符串当前字符与下一个字符对应整数的大小关系。
这种建立查找表的题可以通过map来解决。
Tips
Map(C++)
1. 定义
所有元素都是pair,同时拥有键值(key)和实值(value),第一个元素作为键值key,map不允许有相同的键值,第二个值是key对应的value值。key和value可以是任意需要的类型。
2. 构造函数
map<int, string> newMap;
3. 添加数据
map<int, string> newMap;
pair<int , string> add(1,"a");
newMap.insert(add);
for循环(python)
1. 循环定义
for anElement in object:
对象Object是一个集合,可以遍历每一个元素
2. 利用range生成整数序列
- 三个参数:起始值、终值、步长
- 起始值如果不提供则默认为0
- 终值是必须的参数,如果只有一个参数,那么该参数就是终值
- 步长默认为1,只有提供三个参数时,才有步长值
range(5)
[0, 1, 2, 3, 4]
range(3,8)
[3, 4, 5, 6, 7]
range(1,20,4)
[1, 5, 9, 13, 17]
3. 不能改变变量值
在python中,for循环相当于一个迭代器,在循环体改变循环变量的值对循环次数是没有影响的。因此,对于需要改变变量值的,可以改用while循环。
词典结构(python)
利用查找键值来查找对应的实值
C++
class Solution {
public:
int romanToInt(string s) {
map<char, int> table={{'I', 1}, {'V', 5}, {'X',10}, {'L', 50}, {'C',100}, {'D', 500}, {'M', 1000}};
int resVal = 0;
for(int i= 0; i < s.length(); i++){
if(i+1 <s.length() && table[s.at(i)] < table[s.at(i+1)]){
resVal += table[s.at(i+1)] - table[s.at(i)];
i++;
continue;
}
resVal += table[s.at(i)];
}
return resVal;
}
};
Python
def romanToInt(self, s):
"""
:type s: str
:rtype: int
"""
table = {'I':1,'V':5,'X':10,'L':50,'C':100,'D':500,'M':1000}
resInt = 0
i = 0
while i < len(s):
if i > 0 and table[s[i]] > table[s[i - 1]]:
resInt += table[s[i]] - 2 * table[s[i - 1]]
else:
resInt += table[s[i]]
i += 1
return resInt
13. Roman to Integer[E]罗马数字转整数的更多相关文章
- Leetcode#13. Roman to Integer(罗马数字转整数)
题目描述 罗马数字包含以下七种字符:I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 写做 II ,即 ...
- leetCode练题——13. Roman to Integer
1.题目13. Roman to Integer Roman numerals are represented by seven different symbols: I, V, X, L, C, D ...
- Leetcode 13. Roman to Integer(水)
13. Roman to Integer Easy Roman numerals are represented by seven different symbols: I, V, X, L, C, ...
- LeetCode 13 Roman to Integer(罗马数字转为整数)
题目链接 https://leetcode.com/problems/roman-to-integer/?tab=Description int toNumber(char ch) { switc ...
- LeetCode 13 Roman to Integer 解题报告
题目要求 Roman numerals are represented by seven different symbols: I, V, X, L, C, Dand M. Symbol Value ...
- C# 写 LeetCode easy #13 Roman to Integer
13.Roman to Integer Roman numerals are represented by seven different symbols: I, V, X, L, C, D and ...
- 《LeetBook》leetcode题解(13):Roman to Integer[E]
我现在在做一个叫<leetbook>的免费开源书项目,力求提供最易懂的中文思路,目前把解题思路都同步更新到gitbook上了,需要的同学可以去看看 书的地址:https://hk029.g ...
- 13. Roman to Integer【leetcode】
Roman to Integer Given a roman numeral, convert it to an integer. Input is guaranteed to be within t ...
- 【LeetCode】13. Roman to Integer (2 solutions)
Roman to Integer Given a roman numeral, convert it to an integer. Input is guaranteed to be within t ...
随机推荐
- JavaScript DOM 总结
一.DOM基础1.节点(node)层次Document--最顶层的节点,所有的其他节点都是附属于它的.DocumentType--DTD引用(使用<!DOCTYPE>语法)的对象表现形式, ...
- 洛谷P2607 [ZJOI2008]骑士(树形dp)
题目描述 Z国的骑士团是一个很有势力的组织,帮会中汇聚了来自各地的精英.他们劫富济贫,惩恶扬善,受到社会各界的赞扬. 最近发生了一件可怕的事情,邪恶的Y国发动了一场针对Z国的侵略战争.战火绵延五百里, ...
- Java单例模式 多种实现方式
一:通过静态私有成员实现单例模式 (1):私有化构造函数 (2):new静态实例属性对象,加锁. 单例类: package SinglePag; /* * 构造函数私有化,结合锁+静态的概念 实现单例 ...
- Absolute Horizontal And Vertical Centering In CSS
Quick CSS Trick: How To Center an Object Exactly In The Center Centering in CSS: A Complete Guide Ab ...
- SqlServer与MySql 系统表查询自建表数据
SqlServer: SELECT * FROM sys.sysobjects WHERE type='U' ORDER BY name SELECT * FROM sys.syscolumns WH ...
- Eclipse 中的 Bulid Path
什么是Build Path? Build Path是指定Java工程所包含的资源属性集合. 在一个成熟的Java工程中,不仅仅有自己编写的源代码,还需要引用系统运行库(JRE).第三方的功能扩展库.工 ...
- Java JDK 1.7 和 JDK 1.8 新特性
0 引言 本文主要介绍 Java JDK 中 1.7 和 1.8 的新特性. 1 JDK 1.7 新特性 1. switch可以接受String类型: public class Switch { pu ...
- appium不能获取webview内容的解决办法
在用appium对小猿搜题app进行自动化测试时,准备用page_source打印出文章的xml内容 但是发现只能打印出外部结构内容,实际的文章内容却没有显示 截图如下 查询之后,得知需要通过cont ...
- Linux安装pycharm
1.pycharm包地址:链接:https://pan.baidu.com/s/1uZJDvP0DW-l7FE2J4tB-Pw 密码:5ebi rz上传到服务器 tar -zxvf pycharm-c ...
- UVA10340 - All in All(紫书习题3.9)
输入两个字符串s和t,判断是否可以从t中删除0个或者多个字符(其他字符顺序不变),得到字符串s.例如,abcde可以得到bce,但无法得到cb. Input 输入多组数据 每组一行包含两个字符串s和t ...