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.

    解题思路:罗马数字的构成规则是:

    1. 相同的数字连写,所表示的数等于这些数字相加得到的数,如 Ⅲ=3;
    2. 小的数字在大的数字的右边,所表示的数等于这些数字相加得到的数,如 Ⅷ=8、Ⅻ=12;
    3. 小的数字(限于 Ⅰ、X 和 C)在大的数字的左边,所表示的数等于大数减小数得到的数。

    所以解题的时候,我们就一直加,加到出现左边这个数字比右边这个数字小的时候,再减去他。因为之前加过他一次,所以减去的时候,需要减去两次。

    代码为:

    class Solution {
    public:
        int romanToInt(string s) {
            int slen = s.length();
            if(slen <= 0)
                return 0;
            char s_copy[slen + 1];
            strncpy(s_copy,s.c_str(),slen);
            int res = todigit(s_copy[0]);
            for(int i = 1;i < slen; i++)
            {
                if(todigit(s_copy[i - 1]) < todigit(s_copy[i]))
                {
                    res += todigit(s_copy[i]) - 2 * todigit(s_copy[i - 1]) ;
                }
                else
                {
                    res += todigit(s_copy[i]);
                }
            }
            return res;
        }
       
        int todigit(char ch) {     
            switch (ch) {
                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; 
           } 
          return 0; 
        }

    };

  • 相关阅读:
    使用pwn_deploy_chroot部署国赛pwn比赛题目
    《Java程序设计》第十一章 JDBC与MySQL数据库
    使用commons.cli实现MyCP
    2018-2019-2 20175211 实验二《Java面向对象程序设计》实验报告
    结对编程练习_四则运算(第二周)
    20175211 2018-2019-2 《Java程序设计》第六周学习总结
    20175211 2017-2018-2 《Java程序设计》第六周学习记录(2)
    海思Hi35xx平台调试笔记
    ffmpeg,rtmpdump和nginx rtmp实现录屏,直播和录制
    文件传输(xmodem协议)
  • 原文地址:https://www.cnblogs.com/CodingGirl121/p/5409364.html
Copyright © 2011-2022 走看看