罗马数字转整数
class Solution {public int romanToInt(String s) {Map<Character,Integer> map = new HashMap<Character,Integer>(){{put('I',1);put('V',5);put('X',10);put('L',50);put('C',100);put('D',500);put('M',1000);}};int res = 0;for(int i = 0;i<s.length();i++){int val = map.get(s.charAt(i));if(i<s.length()-1&&val<map.get(s.charAt(i+1))){res -= val;}else{res += val;}}return res;}
}
问题的本质是,一般前一个数比后一个数大,当前一个数比后一个数小时,那么就减去它。
以后读题也很重要,训练自己对细节的把握,思考问题的本质。