大家好,又见面了,我是你们的朋友全栈君。
题目:
罗马数字包含以下七种字符: 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 得到的数值 4 。同样地,数字 9 表示为 IX。这个特殊的规则只适用于以下六种情况:
I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。 X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。 C 可以放在 D (500) 和 M (1000) 的左边,来表示 400 和 900。 给定一个罗马数字,将其转换成整数。
代码语言:javascript复制
class Solution:
def romanToInt(self, s: str) -> int:
SYMBOL_VALUES = {
'I': 1,
'V': 5,
'X': 10,
'L': 50,
'C': 100,
'D': 500,
'M': 1000,
}
a=0
for i, element in enumerate(s):
if i<len(s)-1 and SYMBOL_VALUES[s[i]] < SYMBOL_VALUES[s[i 1]]:
#如果此时的罗马符号表示的数字比其右边的数字小的话,
则左边的数字由加改为减,而右边的数字认为加
a -= SYMBOL_VALUES[s[i]]
else:
a = SYMBOL_VALUES[s[i]]
return a
执行用时:48 ms, 在所有 Python3 提交中击败了75.60%的用户
内存消耗:15 MB, 在所有 Python3 提交中击败了56.65%的用户
通过测试用例:3999 / 3999
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。