p13

LeetCode 13 Roman to Integer 题解

1.题目:

Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.

题意:

将罗马字符转换为对应数字

2.解题思路:

转换规则:每个字母对应一个数,小数置于大数后面为加法Ⅵ=6,反之为减法Ⅳ=4。

3.代码


[title] [] [url] [link text]
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
41
42
43
44
45
46
47
48
49
50
51
52
 

public class Solution {
public int romanToInt(String s) {
int ans = 0;
int one = 0;
int last = 0;
int len = s.length();
int[] nums = { 1, 5, 10, 50, 100, 500, 1000 };

for (int i = 0; i < len; i++) {
switch (s.charAt(i)) {
case 'I':
one = nums[0];
break;
case 'V':
one = nums[1];
break;
case 'X':
one = nums[2];
break;
case 'L':
one = nums[3];
break;
case 'C':
one = nums[4];
break;
case 'D':
one = nums[5];
break;
case 'M':
one = nums[6];
break;

default:
break;
}
//以上匹配对应数字
if (one>last)
{
ans =ans-2*last+one; //小数置前的情况,做减法,由于之前做过一次加法,所有减两次。

}
else {
ans =ans+one; //小数置后或者初始化做加法
}
last=one;
}
return ans;
}
}


4.一些总结: