leetcode [13] Roman to Integer 将罗马数字转换成整数

罗马数字的表示方式

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;
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容