Leetcode_num14_Roman to Integer
来源:互联网 发布:java类库查询辞典 编辑:程序博客网 时间:2024/05/17 04:37
题目:
Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
题目意思很简单,即将一个罗马数字的字符串,转化为整数。
首先我们需要对罗马数字有一个基本的认识,由于题目已将数字大小限定在1~3999,所以我们只需考虑千位数即可,无需涉及数字的分段等复杂的问题。
下面简要列出罗马数字中的单位:'I' 1; 'V' 5; 'X' 10; 'L' 50 ; 'C' 100; 'D' 500; 'M' 1000
罗马数字的大小即是将其中所包含字符所代表的的数字求和,其中数字的组合规律为: I X C 会因位置的不同而加减其值。举个栗子,IV的值为4,而VI的值为6;CD的值为400,而DC的值为600。V L D M在1~3999的范围内则不存在该问题。
最终选择了一个只需遍历一次字符串的方法,即从末尾开始遍历罗马数字字符串,若出现 I(X ,C) ,如果已遍历部分的值高于V(L, D),则在已有结果中减去I(X ,C)的值,反之,则加上。
总结一句,此题的关键在于找规律,最后上代码咯~
class Solution: # @return an integer def romanToInt(self, s): L=len(s) res=0 for i in range(L-1,-1,-1): a=s[i] if a=='I': if res>=5: res-=1 else: res+=1 elif a=='V': res+=5 elif a=='X': if res>=50: res-=10 else: res+=10 elif a=='L': res+=50 elif a=='C': if res>=500: res-=100 else: res+=100 elif a=='D': res+=500 elif a=='M': res+=1000 return res
0 0
- Leetcode_num14_Roman to Integer
- 【Integer转换】Integer to Roman
- string to integer & integer to string
- Integer to Roman & Roman to Integer
- Integer to Roman & Roman to Integer
- LeetCode Roman to Integer && Integer to Roman
- 【leetcode】Roman to Integer | Integer to Roman
- Leetcode - "Roman to Integer" & "Integer to Roman"
- LeetCode:Roman to Integer,Integer to Roman
- Integer to Roman and Roman to Integer
- LeetCode Integer to Roman & Roman to Integer
- Roman to Integer/Integer to Roman
- leetcode - roman to integer & integer to roman
- "Roman to Integer" and "Integer to Roman"
- Roman to Integer &&Integer to Roman
- Roman to Integer and Integer to Roman
- Roman to Integer/Integer to Roman
- string to integer
- .NET 批量插入数据,先查后插,性能优化
- Flex样式表自定义 .css
- 云智慧获千万级美元 B 轮融资,希望从技术端入手覆盖企业前后端管理
- 机器学习相关数据库
- SourceInsight的使用笔记
- Leetcode_num14_Roman to Integer
- 原型冒充和复制继承
- 智能提取2
- 服务器开发基础内容
- mongodb find
- 时间Sleep函数
- registerForRemoteNotificationTypes: is not supported in iOS 8.0 and
- codeigniter 去除index.php (nginx,apache) 通用方法
- Java序列化的机制和原理