zoukankan      html  css  js  c++  java
  • 13. Roman to Integer

    Given a roman numeral, convert it to an integer.

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

    分析

    从前往后扫描,因为左减数字只能最多一位,并且比当前数字小,所以扫描的时候不断判断当前罗马字符和上一个的大小,如果s[i-1] < s[i],那么就加上 s[i] - s[i - 1],其他情况,加上 s[i]。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    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;
            defaultreturn 0;
        }
    }
        int romanToInt(string s) {
            int len = s.size();
            if(len == 0) return 0;
            int result = 0;
            for (int i = 0; i < len; ++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;
        }
    };






  • 相关阅读:
    USB 之传输编码格式 NRZI 介绍
    ubuntu 14.04 安装中文输入法
    uart 超声波传感器数据读取
    Embarcadero Delphi 7 Lite 7.0.4.453 中文版
    Delphi连接Oracle控件ODAC的安装及使用
    ODAC 安裝 (11.2.4)
    Sql中CHARINDEX用法
    DELPHI 数据库控件心得
    delphi uniDac
    Delphi连接Oracle控件ODAC的安装及使用
  • 原文地址:https://www.cnblogs.com/zhxshseu/p/906af788e77ab7a5f1bb757a71dd18a2.html
Copyright © 2011-2022 走看看