class Solution { public int romanToInt(String s) { int n = s.length(); int sum =0; for(int i=0; i<n; i++){ if(i<n-1 && revertInt(s.charAt(i))<revertInt(s.charAt(i+1))){ sum -= revertInt(s.charAt(i)); }else{ sum += revertInt(s.charAt(i)); } } return sum; } public int revertInt(Character s){ Map<Character, Integer> maps = new HashMap<>(); maps.put('I',1); maps.put('V',5); maps.put('X',10); maps.put('L',50); maps.put('C',100); maps.put('D',500); maps.put('M',1000); return maps.get(s); } }
字符串转整数:
前后两个字符比较,若是前面的小于后面的字符,那么前面的字符对应的数字符号位是负的
C就是-100,M是1000,结果是1000
真的低啊
LeetCode算法题(1):罗马数字转整数java
最新推荐文章于 2024-09-06 10:38:06 发布