LeetCode13 Roman to Integer

题意:

Given a roman numeral, convert it to an integer.

Input is guaranteed to be within the range from 1 to 3999.

 

分析:

开始准备采用将罗马数字的字符串先划分千位,百位等,但是实际操作起来代码太复杂,而且自己想的逻辑也有问题。

最后采用的方式是从前到后遍历一遍字符即可,加判断来查看字符是不是与前面字符一起组成“小数在大数左边的数字”;

然后依次加数到结果进去即可。

代码:

 1 class Solution {
 2 public:
 3     int romanToInt(string s) {
 4         int result = 0;
 5         for (int i = 0; i < s.size(); ++i) {
 6             if (s[i] == 'M') {
 7                 if (i - 1 >= 0 && s[i-1] == 'C') {
 8                     result += 800;
 9                 }
10                 else {
11                     result += 1000;
12                 }
13             }
14             if (s[i] == 'D') {
15                 if (i - 1 >= 0 && s[i-1] == 'C') {
16                     result += 300;
17                 }
18                 else {
19                     result += 500;
20                 }
21             }
22             if (s[i] == 'C') {
23                 if (i - 1 >= 0 && s[i-1] == 'X') {
24                     result += 80;
25                 }
26                 else {
27                     result += 100;
28                 }
29             }
30             if (s[i] == 'L') {
31                 if (i - 1 >= 0 && s[i-1] == 'X') {
32                     result += 30;
33                 }
34                 else {
35                     result += 50;
36                 }
37             }
38             if (s[i] == 'X') {
39                 if (i - 1 >= 0 && s[i-1] == 'I') {
40                     result += 8;
41                 }
42                 else {
43                     result += 10;
44                 }
45             }
46             if (s[i] == 'V') {
47                 if (i - 1 >= 0 && s[i-1] == 'I') {
48                     result += 3;
49                 }
50                 else {
51                     result += 5;
52                 }
53             }
54             if (s[i] == 'I'){
55                 result += 1;
56             }
57         }
58         return result;
59     }
60 };

 

posted @ 2016-08-08 22:01  wangxiaobao1114  阅读(157)  评论(0编辑  收藏  举报