/*
(有缺陷 最好是从后往前)
建立一个map储存映射关系 可以用swith;
思路是 从前到后遍历 前面的数大于后面的数 吧前面的数加到结果里,反之相减加入结果;
*/
class Solution {
public int romanToInt(String s) {
if(s == null || s.length() == 0) {
return 0;
}
Map rmi = new HashMap();
rmi.put('M', 1000);
rmi.put('D', 500);
rmi.put('C', 100);
rmi.put('L', 50);
rmi.put('X', 10);
rmi.put('V', 5);
rmi.put('I', 1);
int result = 0;
int[] nums = new int[20];
for(int i = 0; i < s.length(); i++) {
nums[i] = (int)rmi.get(s.charAt(i));
}
for(int i = 0, j = 1; i < nums.length - 1; ) {
if(nums[i] - nums[j] >= 0) {
result += nums[i];
i++;
j++;
}else {
result += nums[j] - nums[i];
i = i + 2;
j = j + 2;
}
}
return result;
}
}
网友评论