问题描述
思路解析
-
对于这种限制字符的问题,使用Map来对键值存储
-
对其进行判断,如果前面的数小于后面的数,那么结果相减
-
否则,正常相加。
代码
class Solution {
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);
}
};
public int romanToInt(String s) {
int ans=0;
int n=s.length();
for(int i=0;i<n;i++){
if(i<n-1&&map.get(s.charAt(i))<map.get(s.charAt(i+1)))
ans-=map.get(s.charAt(i));
else
ans+=map.get(s.charAt(i));
}
return ans;
}
}