zoukankan      html  css  js  c++  java
  • LeetCode 013 Roman to Integer

    题目描述:Roman to Integer

    Given a roman numeral, convert it to an integer.

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

    分析:

    ① 输入为VII,则数字为V + I + I = 5 + 1 + 1 = 7;

    ② 输入为IV,则数字为V - I = 5 - 1 = 4。

    所以要先判断前一个字符与后一个字符的关系,再决定加减。

    代码如下:

    class Solution {
    public:
    
        inline int map(const 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;
                case 'M': return 1000;
                default: return 0;
            }
        }
        
        int romanToInt(string s) {
            
            int result = 0;
            
            for(int i = 0; i < s.size(); i++){
                //判断第一个字符与下一个字符的关系
                if (i > 0 && map(s[i]) > map(s[i - 1])) 
                    result += (map(s[i]) - 2 * map(s[i - 1]));
                else result += map(s[i]);
            }
            
            return result;
            
        }
    };
  • 相关阅读:
    图书-哲学-奥卡姆剃刀:《奥卡姆剃刀原理》
    汉语-词语-认知:认知能力
    汉语-词语-认知:认知水平
    汉语-词语:认知
    pg_dump
    pg_ctl
    pg_controldata
    pg_config
    paste
    passwd
  • 原文地址:https://www.cnblogs.com/510602159-Yano/p/4278826.html
Copyright © 2011-2022 走看看