题目描述(简单难度)
和上一道题相反,将罗马数字转换成阿拉伯数字。
解法一
先来一种不优雅的,也就是我开始的想法。就是遍历字符串,然后转换就可以,但同时得考虑 IV,IX 那些特殊情况。
时间复杂度:O(n),n 是字符串的长度。
空间复杂度:O(1)。
下边分享一些优雅的。
解法二
把出现的特殊情况,提前减了就可以。
时间复杂度:O(1)。
空间复杂度:O(1)。
解法三
利用到罗马数字的规则,一般情况是表示数字大的字母在前,数字小的字母在后,如果不是这样,就说明出现了特殊情况,此时应该做减法。
空间复杂度:O(1)。
总
这道题也不难,自己一开始没有充分利用罗马数字的特点,而是用一些 if,switch 语句判断是否是特殊情况,看起来就很繁琐了。
添加好友一起进步~
如果觉得有帮助的话,可以点击 给一个 star 哦 ^^