LeetCode Roman to Integer(罗马数字转换)

思路:

罗马数字是 阿拉伯数字传入之前使用的一种数码。罗马数字采用七个罗马字母作数字、即Ⅰ(1)、X(10)、C(100)、M(1000)、V(5)、L(50)、D(500)。记数的方法:
  1. 相同的数字连写,所表示的数等于这些数字相加得到的数,如 Ⅲ=3;
  2. 小的数字在大的数字的右边,所表示的数等于这些数字相加得到的数,如 Ⅷ=8、Ⅻ=12;
  3. 小的数字(限于 Ⅰ、X 和 C)在大的数字的左边,所表示的数等于大数减小数得到的数,如 Ⅳ=4、Ⅸ=9;
  4. 在一个数的上面画一条横线,表示这个数增值 1,000 倍,如
 
=5000。
代码如下:

public class Solution
{
    private int getNum(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;
            default:
                return 1000;
        }
    }

    public int romanToInt(String s)
    {
        int sum = 0;
        for (int i = 0; i < s.length(); i++)
        {
            if (i + 1 < s.length() && getNum(s.charAt(i)) < getNum(s.charAt(i + 1)))
            {
                sum -= getNum(s.charAt(i));
            }
            else
            {
                sum += getNum(s.charAt(i));
            }
        }

        return sum;
    }
}


你可能感兴趣的:(#)