没啥厉害的,主要是看官方解答
直接说思路咯
在罗马数字总
4 用 IV 表示,在这里面 I 充当着 -1 V 则充当着 5,
90用XC 表示, X 相当充当着 -10 ,C则充当着 100 ,
你会发现,在题目中所说的情况中,I在V和C的左边相当于整体上-1,那么整体上思路就来了,去判断当前这个字符所代表的的数字是否比下一位小,小则减去当前这个字符所代表的的数字,
明白一点:罗马数字中的 3 是用III 表示,不会用 IIV来去表示,所以题就简单的解答出来了。
public int romanToInt(String s) {
Map<Character, Integer> map = new HashMap<>();
map.put('I',1);
map.put('V',5);
map.put('X',10);
map.put('L',50);
map.put('C',100);
map.put('D',500);
map.put('M',1000);
int num = 0;
int n = s.length();
for (int i = 0; i < n; i++) {
int a = map.get(s.charAt(i));
if (i != n-1 && a < map.get(s.charAt(i+1))){
num = num - a;
}else{
num = num + a;
}
}
return num;
}
3万+

被折叠的 条评论
为什么被折叠?



