罗马数字包含以下七种字符: I
, V
, X
, L
,C
,D
和 M
。单个字符的值分别为:1、5、10、50、100、500、1000。
其中有六种特殊情况:IV=4;IV=9;XL=40;XC=90;CD=400;CM=900;
代码如下:
public class Solution {
public static void main(String[] args) {
String s = "IIVIXXX";
Solution sl = new Solution();
System.out.println(sl.romanToInt(s));
}
public int romanToInt(String s) {
int i = 0,num=0;
char[] arr = s.toCharArray();
while(i<arr.length){
String result=""+arr[i];
if(i+1!=arr.length)
result+=arr[i+1];
System.out.println(result);
if(result.contains("IV")||result.contains("IX")||result.contains("XL")||result.contains("XC")
||result.contains("CD")||result.contains("CM")) {
if(result.contains("IV")) {
num+=4;
System.out.println(num);
}
else if(result.contains("IX")){
num+=9;
System.out.println(num);
}
else if(result.contains("XL")){
num+=40;
System.out.println(num);
}
else if(result.contains("XC")){
num+=90;
System.out.println(num);
}
else if(result.contains("CD")){
num+=400;
System.out.println(num);
}
else if(result.contains("CM")){
num+=900;
System.out.println(num);
}
i+=2;
}else {
if(arr[i]=='I') {
num+=1;
System.out.println(num);
}
else if(arr[i]=='V'){
num+=5;
System.out.println(num);
}
else if(arr[i]=='X'){
num+=10;
System.out.println(num);
}
else if(arr[i]=='L'){
num+=50;
System.out.println(num);
}
else if(arr[i]=='C'){
num+=100;
System.out.println(num);
}
else if(arr[i]=='D'){
num+=500;
System.out.println(num);
}
else if(arr[i]=='M'){
num+=1000;
System.out.println(num);
}
i+=1;
}
}
return num;
}
}