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

    Given a roman numeral, convert it to an integer.

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

    以下为补充知识,百度到的罗马数字写法:

    个位数举例
    I, 1 】II, 2】 III, 3】 IV, 4 】V, 5 】VI, 6】 VII, 7】 VIII,8 】IX, 9

    ·十位数举例
      X, 10】 XI, 11 】XII, 12】 XIII, 13】 XIV, 14】 XV, 15 】XVI, 16 】XVII, 17 】XVIII, 18】 XIX, 19】 XX, 20】  XXI, 21 】XXII, 22 】XXIX, 29】 XXX, 30】 XXXIV, 34】 XXXV, 35 】XXXIX, 39】 XL, 40】 L, 50 】LI, 51】 LV, 55】 LX, 60】 LXV, 65】 LXXX, 80】 XC, 90 】XCIII, 93】 XCV, 95 】XCVIII, 98】 XCIX, 99 】

    ·百位数举例
    C, 100】 CC, 200 】CCC, 300 】CD, 400】 D, 500 】DC,600 】DCC, 700】 DCCC, 800 】CM, 900】 CMXCIX,999】

    ·千位数举例
    M, 1000】 MC, 1100 】MCD, 1400 】MD, 1500 】MDC, 1600 】MDCLXVI, 1666】 MDCCCLXXXVIII, 1888 】MDCCCXCIX, 1899 】MCM, 1900 】MCMLXXVI, 1976】 MCMLXXXIV, 1984】 MCMXC, 1990 】MM, 2000 】MMMCMXCIX, 3999】

    class Solution {
    public:
        int romanToInt(string s) {
            int len = s.size();
            map<char,int> mDic;
            mDic['I']=1;
            mDic['V']=5;
            mDic['X']=10;
            mDic['L']=50;
            mDic['C']=100;
            mDic['D']=500;
            mDic['M']=1000;
            int res = 0,i;
            for(i=0;i<len;i++)
            {
               if(i<len-1 && ((s[i]=='I' && (s[i+1]=='V'||s[i+1]=='X'))   //或简单写成:if(i<len-1 && mDic[s[i+1]]>mDic[s[i]])
    ||(s[i]=='X' && (s[i+1]=='L'||s[i+1]=='C'))
    ||(s[i]=='C' && (s[i+1]=='D'||s[i+1]=='M')))) { res += (mDic[s[i+1]]-mDic[s[i]]); i++; } else { res += mDic[s[i]]; } }//end for return res; } };
  • 相关阅读:
    类加载机制
    PTA(BasicLevel)-1094 谷歌的招聘
    PTA(BasicLevel)-1023 组个最小数
    异构图神经网络笔记-Heterogeneous Graph Neural Network(KDD19)
    PTA(BasicLevel)-1014 福尔摩斯的约会
    PTA(BasicLevel)-1013 数素数
    PTA(BasicLevel)-1012 数字分类
    PTA(BasicLevel)-1010 一元多项式求导
    PTA(BasicLevel)-1009 说反话
    PTA(BasicLevel)-1008数组元素循环右移问题
  • 原文地址:https://www.cnblogs.com/Xylophone/p/3859285.html
Copyright © 2011-2022 走看看