题目
解题思路:迭代
- 有题目知,如果当前字符代表的值不小于其右边,就加上该值;否则就减去该值
- 字符与数值间的映射可以用map
代码
class Solution {
public int romanToInt(String s) {
if(s==null || s.length()==0){
return 0;
}
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 count=0;
for(int i = 1 ;i<s.length();i++){
if(map.get(s.charAt(i)) > map.get(s.charAt(i-1))){
count-=map.get(s.charAt(i-1));
}else{
count+=map.get(s.charAt(i-1));
}
}
count+=map.get(s.charAt(s.length()-1));
return count ;
}
}
不懂就问
互联网精神