码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode - 13. Roman to Integer

时间:2016-01-20 12:57:28      阅读:123      评论:0      收藏:0      [点我收藏+]

标签:

题目:  

Given a roman numeral, convert it to an integer.

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

解题思路:

  上一篇已经介绍过罗马数字的组成和计算方式,所以将罗马数字转换成整数还是比较容易的。

  之前我想到的方法就是从左到右一直判断字符以及对1,10,100是需要做减法还是其他,但是看到一个从右至左计算的方法,要简洁很多。

  从右至左计算时,遇到1,10,100时只需判断当前数字是否不小于5,50,500即可。

C#代码:

技术分享
public class Solution {
    public int RomanToInt(string s)
    {
        int result = 0;
        for (int i = s.Length-1 ; i >=0; i--)
        {
            switch (s[i])
            {
                case I:
                    result += (result >= 5) ? -1 : 1;
                    break;
                case V:
                    result += 5;
                    break;
                case X:
                    result += (result >= 50) ? -10 : 10;
                    break;
                case L:
                    result += 50;
                    break;
                case C:
                    result += (result >= 500) ? -100 : 100;
                    break;
                case D:
                    result += 500;
                    break;
                case M:
                    result += 1000;
                    break;
                default:
                    return 0;
            }
        }
        return result;
    }
}
View Code

 

LeetCode - 13. Roman to Integer

标签:

原文地址:http://www.cnblogs.com/xquancnblogs/p/5144480.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!