大致思想:罗马字符一般都是从前往后,从大到小排来表示数,这样只要每个罗马字母所代表的数字相加即可
如果前一个罗马字母代表的数字比后一个小,则相减。
代码:
class Solution
{
public int romanToInt(String s)
{
int length=s.length();
int sum;
if(s==null||length==0)return -1;
Map<Character,Integer>map=new HashMap<Character,Integer>();//
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);
sum=map.get(s.charAt(length-1));
for(int i=length-2;i>=0;i--)
{
if(map.get(s.charAt(i))>=map.get(s.charAt(i+1)))
sum+=map.get(s.charAt(i));
else sum-=map.get(s.charAt(i));
}
return sum;
}
}
Map 提供了一个更通用的元素存储方法。 Map 集合类用于存储元素对(称作“键”和“值”),其中每个键映射到一个值。
put(Object key, Object value) | 将指定值与指定键相关联 |
get(Object key) | 返回与指定键关联的值 |