算法每日一题20190622:罗马数字转整数
算法 About 1,946 words题目
难易程度:【简单】
罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。| 字符 | 数值 | 
|---|---|
| I | 1 | 
| V | 5 | 
| X | 10 | 
| L | 50 | 
| C | 100 | 
| D | 500 | 
| M | 1000 | 
例如, 罗马数字2写做II,即为两个并列的1。12写做XII,即为 X + II。27写做 XXVII, 即为XX + V + II。
通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如4不写做IIII,而是IV。数字1在数字5的左边,所表示的数等于大数5减小数1得到的数值4。同样地,数字9表示为IX。这个特殊的规则只适用于以下六种情况:
- I可以放在- V(5) 和- X(10) 的左边,来表示- 4和- 9。
- X可以放在- L(50) 和- C(100) 的左边,来表示- 40和- 90。
- C可以放在- D(500) 和- M(1000) 的左边,来表示- 400和- 900。
示例
示例 1:
输入: "III"
输出: 3示例 2:
输入: "IV"
输出: 4示例 3:
输入: "IX"
输出: 9示例 4:
输入: "LVIII"
输出: 58
解释: L = 50, V= 5, III = 3.示例 5:
输入: "MCMXCIV"
输出: 1994
解释: M = 1000, CM = 900, XC = 90, IV = 4.博主答案
class Solution {
    public int romanToInt(String s) {
        int total = 0;
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            switch (c) {
                case 'I':
                    total += 1;
                    break;
                case 'V':
                    total += 5;
                    break;
                case 'X':
                    total += 10;
                    break;
                case 'L':
                    total += 50;
                    break;
                case 'C':
                    total += 100;
                    break;
                case 'D':
                    total += 500;
                    break;
                case 'M':
                    total += 1000;
                    break;
            }
            if (i > 0) {
                if ((c == 'V' || c == 'X') && (s.charAt(i - 1) == 'I')) {
                    total -= 1 * 2;
                } else if ((c == 'L' || c == 'C') && (s.charAt(i - 1) == 'X')) {
                    total -= 10 * 2;
                } else if ((c == 'D' || c == 'M') && (s.charAt(i - 1) == 'C')) {
                    total -= 100 * 2;
                }
            }
        }
        return total;
    }
}推荐答案
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/roman-to-integer
                Views: 3,305 · Posted: 2019-06-22
            
            ————        END        ————
Give me a Star, Thanks:)
https://github.com/fendoudebb/LiteNote扫描下方二维码关注公众号和小程序↓↓↓
 
        Loading...