罗马数字转整数
方法一,但是这种方法等于投机取巧不是正解
要看还是得看方法二
class Solution {
public int romanToInt1(String s) {
Map<String,Integer> map = new HashMap<>();
map.put("I", 1);
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 sum = 0;
for(int i=0;i<s.length();){
if(i+1<s.length()&&map.containsKey(s.substring(i,i+2))){
sum = sum+map.get(s.substring(i,i+2));
i = i+2;
}else{
sum = sum+map.get(s.substring(i,i+1));
i = i+1;
}
}
return sum;
}
}
方法二
public int romanToInt(String s) {
int sum=0;
int preNum=getValue(s.charAt(0));
for(int i=1;i<s.length();i++){
int beNum=getValue(s.charAt(i));
if(preNum<beNum){
sum=sun-preNum;
}else{
sum=sum+preNum;
}
preNum=beNum;
}
}
public int getValue(char ch){
switch(ch){
case 'I':return 1;
case 'V':return 5;
case 'X':return 10;
case 'L':return 50;
case 'C':return 100;
case 'D':return 500;
case 'M':return 1000;
default:return 0;
}
}