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

[LeetCode] NO.13 Roman to Integer

时间:2016-08-18 23:24:29      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:

[题目] 

Given a roman numeral, convert it to an integer.

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

 

[题目解析] 这道题很关键的是要理解罗马数字的几个主要的代表符号和表示方式,罗马数字共有七个,即I(1),V(5),X(10),L(50),C(100),D(500),M(1000)

用来表示数字的时候,如果相邻的两个罗马数字,前面表示的数字比后面的小,那么就要减去前面的这个数的值。其他情况都是要累加的。为方便理解,可以参考对照表,如下链接

http://wenku.baidu.com/link?url=K_3-gJahQif18LCEkbbJR8cfYNXZFq3CUYUozuaTNV9q5VQO4TNtFn1u4nqbr3MU5OedPG2BhrmBVw8cyjmZhS1NX64wJ6S105pL7bzJO9S

   public int romanToInt(String s) {
        char[] c = s.toCharArray();
        int sum = 0;
        for (int i = 0; i < c.length; i++) {
            int val = getSymbolValue(c[i]);
            if ((i + 1) < c.length && val < getSymbolValue(c[i+1])) {
                sum -= val;
            } else {
                sum += val;
            }
        }
        return sum;
    }
    
    public int getSymbolValue(char c) {
        switch (c) {
            case ‘I‘: return 1;
            case ‘V‘: return 5;
            case ‘X‘: return 10;
            case ‘L‘: return 50;
            case ‘C‘: return 100;
            case ‘D‘: return 500;
            case ‘M‘: return 1000;            
        }
        return -1;
    }

 

[LeetCode] NO.13 Roman to Integer

标签:

原文地址:http://www.cnblogs.com/zzchit/p/5785609.html

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