美文网首页
leetcode [13] Roman to Integer 将

leetcode [13] Roman to Integer 将

作者: 努力努力再努力_姜姜 | 来源:发表于2016-05-22 11:17 被阅读413次

    罗马数字的表示方式

    I = 1
    V = 5
    X = 10
    L = 50
    C = 100
    D = 500
    M = 1000

    罗马数字的计数方式:

    • 相同的数字连写,表示将这些数字相加
    • 小的数字写在大的数字右边,表示这这个数字相加
    • 大的数字写在小的数字右边,表示用大的数字减去小的数字。

    代码思路:

    • 先将I,V,X,L,C,D,M 转换成其表示的数字

    • 然后将字符数组的中的值进行比较

    • pre >= now ,就将这两个数相加

    • pre<now ,将这两个数相减

    此时需要注意,这个小的数在上一轮中,已经被加过,这一轮假如只减一次,一加一减相当于值没有变;所以这次要将小的数减两次

    public class Solution {
        public int romanToInt(String s) {
            char[] num = s.toCharArray();
            int pre = charToInt(num[0]);
            int result = pre;
            int now = 0;
            for(int j = 1;j<s.length();j++)
            {
                now = charToInt(num[j]);
                if(pre >= now)
                {
                    result += now; 
                }
                else
                {
                    result = result +now - 2 * pre;
                }
                pre = now;
            }
            return result;
        }
        public int charToInt(char c)
        {
            int value = 0;
            switch(c)
            {
                case 'I':
                    value = 1;
                    break;
                case 'V':
                    value = 5;
                    break;
                case 'X':
                    value = 10;
                    break;
                case 'L':
                    value = 50;
                    break;
                case 'C':
                    value = 100;
                    break;
                case 'D':
                    value = 500;
                    break;
                case 'M':
                    value = 1000;
                    break;
            }
            return value;
        }
    }
    

    相关文章

      网友评论

          本文标题:leetcode [13] Roman to Integer 将

          本文链接:https://www.haomeiwen.com/subject/bgvorttx.html