题目
给定一个罗马数字,将其转换成整数。输入确保在1到3999的范围内。
解决方案
1.自己的方法
看到题目首先想到特殊规则只有六种情况,就都一一列出来了。因为罗马数字和整数对应,多以放到哈希表中,java中是map结构。
String转换成Char的函数是s.toCharArray()。
char类型封装的类是Character
运行时间:99ms
2.参考答案
判断不用那么麻烦,只要相邻两个罗马数字前面的数字小,就可以做减法,输入的时候会注意规则的。
运行时间:90ms
复杂度分析:
- 时间复杂度:O(n),遍历一次String
- 空间复杂度:O(n),引入一个哈希表
ps:尝试了罗马数字和对应的整数,用哈希表,循环更快,直接put比较慢。