Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
基本字符
|
I
|
V
|
X
|
L
|
C
|
D
|
M
|
相應的阿拉伯數字表示爲
|
1
|
5
|
10
|
50
|
100
|
500
|
1000
|
4、如果前一個數比後一個數小,則執行相減操作,i=i+2;反之,直接加前一個數,i=i+1。
代碼:
public class Solution {
public int romanToInt(String s) {
int len = s.length();
int result = 0;
int[] tmp = new int[2];
int i = 1;
boolean flag = true;
if(len>1){
while(i<len){
tmp[1] = getInt(i,s);
if(flag){
tmp[0] = getInt(i-1,s);
}
if(tmp[0]<tmp[1]){
result += (tmp[1] - tmp[0]);
flag = true;
i += 2;
}
else{
result += tmp[0];
tmp[0] = tmp[1];
flag = false;
i++;
}
}
if(i==len){
result += getInt(i-1,s);
}
}
else{
result = getInt(0,s);
}
return result;
}
public static int getInt(int i, String s){
int x = 0;
switch(s.charAt(i)){
case 'M':
x = 1000;
break;
case 'D':
x = 500;
break;
case 'C':
x = 100;
break;
case 'L':
x = 50;
break;
case 'X':
x = 10;
break;
case 'V':
x = 5;
break;
case 'I':
x = 1;
break;
}
return x;
}
}