leetcode解题方案--013--Roman to Integer

来源:互联网 发布:mac qq怎么退出讨论组 编辑:程序博客网 时间:2024/04/29 03:36

题目

Given a roman numeral, convert it to an integer.

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

分析

将a[i]与a[i+1]的数进行比较,如果i+1大,则i+1 减去i,否则,依次相加。

除此之外,可以用128位char的数组来存储罗马字母对应的值。

public static int romanToInt(String Roman) {        int[] root = new int[128];        root[(int) 'I'] = 1;        root[(int) 'V'] = 5;        root[(int) 'X'] = 10;        root[(int) 'L'] = 50;        root[(int) 'C'] = 100;        root[(int) 'D'] = 500;        root[(int) 'M'] = 1000;        char[] array = Roman.toCharArray();        int sum = 0;        for (int i = 0; i < array.length; i++) {            if (i + 1 < array.length && root[(int) array[i + 1]] > root[(int) array[i]]) {                sum = sum+root[(int) array[i+1]]-root[(int) array[i]];                i++;            } else {                sum+=root[(int) array[i]];            }        }        return sum;    }
阅读全文
0 0
原创粉丝点击