public class demo11 {
public static void main(String[] args) {
Solution11_ solution11=new Solution11_();
System.out.println(solution11.romanToInt("MCMXCIV"));
}
}
class Solution11_ {
public int romanToInt(String s) {
Map<String,Integer> map=new HashMap();//先储存单个的罗马数字,要计算阿拉伯数字,先要知道0~9一样
map.put("I",1);
map.put("II",2);
map.put("III",3);
map.put("IV",4);
map.put("V",5);
map.put("IX",9);
map.put("X",10);
map.put("XL",40);
map.put("L",50);
map.put("XC",90);
map.put("C",100);
map.put("CD",400);
map.put("D",500);
map.put("CM",900);
map.put("M",1000);
int ans=0;//先给答案设置一个初始值0
//罗马数都是一个字母或者两个字母的组合,给定一串罗马数,
// 从头开始,将各个组合对应的数值相加得到的就是该罗马数字的数值
//所以在计算各个组合的值时,两位字母组合优先级大于一个字母组合,
//每次先取出两位字母寻找map中其对应的数值,若没有,则
for(int i=0;i<s.length();){
if(i+1<s.length()&&map.containsKey(s.substring(i,i+2))){//s中包含从i开始两位
ans=ans+map.get(s.substring(i,i+2));
i=i+2;
}else{
ans=ans+map.get(s.substring(i,i+1));
i=i+1;
}
}
return ans;
}
}
java-map-罗马数
于 2022-02-12 13:37:01 首次发布