lintcode之罗马数字转整数,原题如下所示:

给定一个罗马数字,将其转换成整数。

返回的结果要求在1到3999的范围内。

您在真实的面试中是否遇到过这个题?

Yes

说明

什么是 罗马数字?

  • https://en.wikipedia.org/wiki/Roman_numerals
  • https://zh.wikipedia.org/wiki/%E7%BD%97%E9%A9%AC%E6%95%B0%E5%AD%97
  • http://baike.baidu.com/view/42061.htm
样例

IV -> 4

XII -> 12

XXI -> 21

XCIX -> 99

具体思路如下:

1、首先将罗马数字里面特殊的字符表示出来,使用switch,case语句;

2、考虑到若左边的数小于右边的数,应该是相减,反之应相加,对这两种情况用一个方法表示出来。即若是左边大于先将罗马数字除了最后一位之外全部加上,若是左边小于右边,则加上负的,最后统一再加上最后一位数字表示的整数值。

具体实现的c++代码如下:
class Solution {
public:
    /**
     * @param s Roman representation
     * @return an integer
     */
     
     
    int singleword(char a)
    {
        switch(a)
        {
            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 -1;
    }
    int romanToInt(string& s) {
        // Write your code here
        int l=s.size();
        if(l==0)
        {
            return 0;
        }
        int i;
        int sum=0;
        for(i=0;i<l-1;i++)
        {
            if(singleword(s[i])>=singleword(s[i+1]))
            {
                sum+=singleword(s[i]);
            }
            else
            {
                sum-=singleword(s[i]);
            }
        }
        sum+=singleword(s[l-1]);
        return sum;
    }
};

lintcode刷题——罗马数字转整数相关推荐

  1. 二、lintcode刷题记录--二叉树的路径和

    LintCode刷题记录---二叉树的路径和(效率可能没有那些专业的高,主要是代码结构比较简单) ) 题目地址:http://www.lintcode.com/zh-cn/problem/binary ...

  2. 菜菜的刷题日记 | 12.整数转罗马数字

    系列索引:菜菜的刷题日记 | 被LeetCode用Python狂虐的那段日子 菜鸡的刷题之路--2022/1/24,这几天忙着肝并发编程,题在做但是没空写题解,今晚补一篇. 文章目录 [题目] [官方 ...

  3. LintCode刷题:有效数字

    今天第一次是跟随一个博主学习足迹知道有LintCode 和LeetCode这两个刷题网址,专为学编程的同志练手,我希望我可以每天坚持刷一题!!!! 第一次不知道直接点"帮我挑一题" ...

  4. LintCode刷题(入门篇)

    最近在玩LintCode上面的算法题.下面分享一下部分题目的答案.如果其他同学有更好的答案,可以和我交流讨论,本人菜鸟一个,各位大佬多指点. 同时说一下,这个上面的二叉树 和 链表 我不懂,所以这类题 ...

  5. LeetCode题组:第13题-罗马数字转整数

    1.题目:回文数 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 写做I ...

  6. lintcode刷题 14. 二分查找,迭代和二分法Python实现

    14. 二分查找 描述 给定一个排序的整数数组(升序)和一个要查找的整数target,用O(logn)的时间查找到target第一次出现的下标(从0开始),如果target不存在于数组中,返回-1. ...

  7. LeetCode:第13题 罗马数字转整数 python语言实现 2020.2.3

    罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符          数值 I             1 V             5 X             10 L ...

  8. 算法题---罗马数字转整数

    罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I : 1 V : 5 X : 10 L : 50 C : 100 D : 500 M : 1000 例如, 罗马数字 ...

  9. 力扣13题---罗马数字转整数

    罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 写做 II ,即为两个并 ...

  10. LintCode刷题——不同的二叉查找树I、II

    不同的二叉查找树I: 题目内容: 给出 n,问由 1...n 为节点组成的不同的二叉查找树有多少种? 样例: 给出n = 3,有5种不同形态的二叉查找树: 1 3 3 2 1\ / / / \ \3 ...

最新文章

  1. py2 HTMLTestRunner报告
  2. 访问vue实例中的数据
  3. 微服务2.0技术栈选型手册,值得架构师借鉴
  4. java url 授权_Java:如何使用UrlConnection发布请求与授权?
  5. 【转】Thunderbird中配置签名
  6. DBA跳槽应该去大公司还是小公司?99%的人这样说...
  7. SQL Server 漏洞评估工具
  8. javax maven项目缺少_教育平台项目后台管理系统:介绍与搭建
  9. 欧姆龙修复PLC编程软件中的多个高危漏洞
  10. Cesium知识点:根据经纬度获取高程
  11. 杰·亚伯拉罕的产品营销35种策略完整版
  12. Linux中vi命令详解
  13. 步进电机控制和步进电机原理
  14. 快递单号快速查询,自动识别快递公司
  15. 大地测量常用的四种坐标系
  16. 单击Artwork时没有弹窗的问题
  17. 关于在多重积分以及曲线曲面积分中对称性的应用
  18. Swoole 从0开始搭建直播平台
  19. php充值赠送如何结算,餐饮会员充值赠送怎么计算成本?
  20. 什么是FreeMarker

热门文章

  1. 物质世界微观粒子运动规律——量子力学
  2. SpringCloud-Netflix-04-Eureka 注册中心
  3. Matlab下载安装详细教程
  4. 笔记本计算机摄像头怎么打开,笔记本摄像头怎么打开,教您怎么打开笔记本的摄像头...
  5. db2 创建实例,创建数据库,创建表
  6. C语言实现几何图形绘制
  7. HTTP认证与https简介
  8. 学校计算机教室用多大线径电缆,施工要用多大的电线电缆?本文教你怎么算
  9. Word删除空白页方法,由分节符导致多出空白页删除方法
  10. 用循环写出九九乘法表格。