roman to integer

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
public class Solution{
public int romanToInt(String s){
int nums[] = new int[s.length()];
int sum = 0;
for(int i = 0 ; i < s.length() ; i++){
switch(s.charAt(i)){
case 'I':
nums[i] = 1;
break;
case 'V':
nums[i] = 5;
break;
case 'X':
nums[i] = 10;
break;
case 'L':
nums[i] = 50;
break;
case 'C':
nums[i] = 100;
break;
case 'D':
nums[i] = 500;
break;
case 'M':
nums[i] = 1000;
break;
}
}
for(int i = 0 ; i < s.length() - 1 ; i++){
if(nums[i] < nums[i+1]){
sum -= nums[i];
}else{
sum += nums[i];
}
}
return sum + nums[s.length() - 1];
}
}

思路:

  • 将每个Roman文符号对应转换为Integer

    • 1–I
    • 5–V
    • 10–X
    • 50–L
    • 100–C
    • 500–D
    • 1000–M
  • 转换后的数组左边的数字小就相减,左边数字大就相加

  • 最后加上nums[s.length()-1]就是最终结果