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
|
package leetcode;
public class Roman2Integer {
public static int romanToInt(String s) {
//char[] temp = {'I','V','X','L','C','D','M'}; //I(1)、V(5)、X(10)、L(50)、C(100)、D(500)和M(1000)
//String temp = "IVXLCDM";
char[] chars = s.toCharArray();
int ans = 0;
int frontNumber = 0;
char frontChar = chars[0];
if (chars[0] == 'I'){
frontNumber = 1;
}else if (chars[0] == 'V'){
frontNumber = 5;
}else if (chars[0] == 'X'){
frontNumber = 10;
}else if (chars[0] == 'L'){
frontNumber = 50;
}else if (chars[0] == 'C'){
frontNumber = 100;
}else if (chars[0] == 'D'){
frontNumber = 500;
}else if (chars[0] == 'M'){
frontNumber = 1000;
}
ans += frontNumber;
//System.out.println(ans);
for (int i = 1; i<chars.length; i++){
int backNumber = 0;
if (chars[i] == 'I'){
backNumber = 1;
}else if (chars[i] == 'V'){
backNumber = 5;
}else if (chars[i] == 'X'){
backNumber = 10;
}else if (chars[i] == 'L'){
backNumber = 50;
}else if (chars[i] == 'C'){
backNumber = 100;
}else if (chars[i] == 'D'){
backNumber = 500;
}else if (chars[i] == 'M'){
backNumber = 1000;
}
//System.out.println(frontNumber+" "+backNumber+" "+ans);
if (backNumber>frontNumber){
//System.out.println(frontNumber);
ans = ans - frontNumber * 2 + backNumber;
}else if (backNumber <= frontNumber){
ans = ans + backNumber;
//System.out.println(ans);
}
frontNumber = backNumber;
}
return ans;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(romanToInt("XXXIV"));
}
}