Leetcode 13. Roman to Integer(python)

class Solution(object):
    def romanToInt(self, s):
        """
        :type s: str
        :rtype: int
        """
    	l=len(s)
    	r,i=0,0
    	roman={‘I‘:1,‘V‘:5,‘X‘:10,‘L‘:50,‘C‘:100,‘D‘:500,‘M‘:1000,‘CM‘:900,‘CD‘:400,‘XC‘:90,‘XL‘:40,‘IX‘:9,‘IV‘:4}

    	while i<l:
    		if i<l-1 and roman.has_key(s[i:i+2]):
    			r+=roman[s[i:i+2]]
    			i+=2
    		else:
    			r+=roman[s[i]]
    			i+=1
    	return r

  

时间: 2024-10-28 21:03:30

Leetcode 13. Roman to Integer(python)的相关文章

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 ,即为两个并列的 1.12 写做 XII ,即为 X + II . 27 写做 XXVII, 即为 XX + V + II . 通常情况下,罗马数字中小的数字在大的数字的右边.但也存在特例,例如 4 不写做 IIII,而是 IV.数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数

「Leetcode」13. Roman to Integer(Java)

分析 把具体的情况一个一个实现即可,没有什么幺蛾子. 代码 class Solution { public int romanToInt(String s) { int ans = 0; for (int i=0; i!=s.length(); ++i) { switch(s.charAt(i)) { case 'I': if(i<s.length()-1 && (s.charAt(i+1)=='X' || s.charAt(i+1)=='V')) { ans--; break; }

leetCode 13. Roman to Integer 字符串

13. Roman to Integer Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 to 3999. 补充:罗马数字 罗马数字共有七个,即I(1),V(5),X(10),L(50),C(100),D(500),M(1000).按照下面的规则可以表示任意正整数. 重复数次:一个罗马数字重复几次,就表示这个数的几倍. 右加左减:在一个较大的罗马数

Leetcode 13. Roman to Integer(水)

13. Roman to Integer Easy Roman numerals are represented by seven different symbols: I, V, X, L, C, D and M. Symbol Value I 1 V 5 X 10 L 50 C 100 D 500 M 1000 For example, two is written as II in Roman numeral, just two one's added together. Twelve i

LeetCode 13 Roman to Integer (C,C++,Java,Python)

Problem: Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 to 3999. Solution: 时间复杂度O(n) 题目大意: 与12题相反,给一个罗马数字,要求转化为十进制数字 解题思路: Java源代码(用时749ms): public class Solution { public int romanToInt(String s) {

Leetcode 7. Reverse Integer(python)

该题比较简单,但是这道题有点问题.... python中的整数运算没有没有限制,但是在该oj系统中要求对大数输出0(题目并没有说明,但是在test case中可以看出) 于是偷了个懒,,, class Solution(object): def reverse(self, x): """ :type x: int :rtype: int """ s='' if x==0: return 0 if x<0: s+='-' x=abs(x) w

LeetCode - 13. Roman to Integer - 思考if-else与switch的比较 - ( C++ ) - 解题报告

1.题目: 原题:Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 to 3999. Subscribe to see which companies asked this questio 解析:给出一个罗马数字,要求把其转换为一个整数.输入范围在1到3999内. 罗马数字的规则如下: 罗马数字 I V X L C D M 代表的阿拉伯数字 1 5

[LeetCode][13]Roman to Integer解析 罗马字符转int类型关于栈的常数实现-Java实现

Q: Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 to 3999. A: 以下解法和代码没有借阅以往任何资料,如果有更好的解法请在评论区留言 看到这一题我真是感叹城会玩,昨天刚刚解过一个int转罗马字母,今天又反过来解.自叹弗如.这题的该意思就是给一个罗马字符,把他转化成一个int数字,范围在1-3999之间.关于罗马数字的详细信息就不复制了,

LeetCode 13. Roman to Integer

https://leetcode.com/problems/roman-to-integer/#/description Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 to 3999. 字符串简单题,要搞清楚转换规则.如果当前字母比前一个大,则相减,比如IV = 5 - 1:否则就相加,比如VI = 5 + 1,II = 1 + 1. 罗马数字_