前言

【LeetCode 题解】系列传送门:  http://www.cnblogs.com/double-win/category/573499.html

1.题目描述

Given a roman numeral, convert it to an integer.

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

2. 思路

找到规则即可

罗马数字的表示:

I~1 V~5 X~10 L~50 C~100 D~500 M~1000

规则:

基本数字Ⅰ、X 、C 中的任何一个,自身连用构成数目,或者放在大数的右边连用构成数目,都不能超过三个;放在大数的左边只能用一个。

不能把基本数字V 、L 、D 中的任何一个作为小数放在大数的左边采用相减的方法构成数目;放在大数的右边采用相加的方式构成数目,只能使用一个。

默认所有输入均为正确表示的罗马数字.

如果在输入中有不符合规则的数字,就需要加特殊的判断。

有几条须注意掌握:

  1. V 和X 左边的小数字只能用Ⅰ。
  2. L 和C 左边的小数字只能用X。
  3. D 和M 左边的小数字只能用C。       --摘自百度百科http://baike.baidu.com/view/42061.htm?fr=aladdin

在此就不赘述了

3. 解法

 1 class Solution {
 2 public:
 3     int romanToInt(string s) {
 4         int ans=0,i;
 5         map<char,int> Ma;
 6         {
 7             Ma['I']=1;
 8             Ma['V']=5;
 9             Ma['X']=10;
10             Ma['L']=50;
11             Ma['C']=100;
12             Ma['D']=500;
13             Ma['M']=1000;
14         }
15         ans = Ma[s[0]];
16         for(i=1;i<s.size();i++)
17         {
18             ans = ans + Ma[s[i]];
19             if(Ma[s[i]] > Ma[s[i-1]] )
20                 ans -= 2* Ma[s[i-1]];
21         }
22         return ans;
23     }
24 };

4. 相关题目

相对应的一道题:Roman to Interger : http://www.cnblogs.com/double-win/p/3760002.html

作者:Double_Win

出处:   http://www.cnblogs.com/double-win/p/3761803.html

声明: 由于本人水平有限,文章在表述和代码方面如有不妥之处,欢迎批评指正~

转载于:https://www.cnblogs.com/double-win/p/3760002.html

[LeetCode 题解]: Roman to Interger相关推荐

  1. LeetCode 13. Roman to Integer

    问题链接 LeetCode 13. Roman to Integer 题目解析 将罗马数字转换成普通数字. 解题思路 先简单了解一下什么是罗马数字. 基本字符:I,V,X,L,C,D,M 相应的阿拉伯 ...

  2. 900 多道 LeetCode 题解,这个 GitHub 项目值得 Star!

    转自 | 码农有道 大家好,我是小 G. 周末风和日丽,适合刷 LeetCode 今天给你们推荐个 GitHub 项目,里面收集了 900 多道 LeetCode 题解,并包含中英文两个版本,适合大多 ...

  3. PHP版Leetcode题解开始随缘更新

    2019独角兽企业重金招聘Python工程师标准>>> PHP版Leetcode题解 我叫skys215,是一名bug工程师. 我接触编程的时间比较早,但是因为我数学不好加上比较懒, ...

  4. [LeetCode 题解]: Binary Tree Preorder Traversal

    前言 [LeetCode 题解]系列传送门:  http://www.cnblogs.com/double-win/category/573499.html 1.题目描述 Given a binary ...

  5. LeetCode 题解汇总

    为什么80%的码农都做不了架构师?>>>    LeetCode 题解汇总 转载于:https://my.oschina.net/michao/blog/801863

  6. leetcode题解【持续更新】

    leetcode题解不断更新,以及nowcoder题解.一起加油! 完整请移步我的Github 转载于:https://juejin.im/post/5c8a73d8f265da2de80fa774

  7. 32位有符号整数_008. 字符串转换整数 (atoi) | Leetcode题解

    点击上方"蓝色字体",选择"设为星标" 每天复习一道面试题,轻松拿大厂Offer~ 题目描述: 请你来实现一个 atoi 函数,使其能将字符串转换成整数. 首先 ...

  8. leetcode题解132-分割回文串 II

    问题描述 给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是回文. 返回符合要求的 最少分割次数 . 示例 1: 输入:s = "aab" 输出:1 解释:只需一次分割 ...

  9. leetcode题解131-分割回文串

    问题描述 给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 .返回 s 所有可能的分割方案. 回文串 是正着读和反着读都一样的字符串. 示例 1: 输入:s = "aa ...

最新文章

  1. [文档].JLINK挂了怎么办?自己修![转载].JLINK_V8固件烧录和固件升级指导.pdf
  2. DDR: efficient computational method to predict drug–target interactions using graph mining and machi
  3. 进程间通信——匿名管道
  4. Ubuntu16.04下创建工作空间并添加自己的功能包(python代码)
  5. SAP Commerce Cloud SmartEdit 学习笔记
  6. java整合flex
  7. ES6之主要知识点(二) 变量的解构赋值。默认值
  8. java 1.8 or higher_NetBeans安装提示neatbeans cannot find java 1.8 or higher
  9. mybatis源码学习(二):SQL的执行过程
  10. S3C2440PWM 定时器
  11. 2022年C语言教程入门和最新C语言自学教程C语言进阶教程大全
  12. 大数据笔记 | HDFS 常用操作命令
  13. 白盒测试方法与黑盒测试方法简析
  14. 数据库导出Excel乱码 解决
  15. 7月23日云栖精选夜读丨前端leader找我谈心:我是如何从刚毕业的前端菜鸟一步步成长为前端工程师的?...
  16. “Bluetooth keeps stopping“
  17. 双击启动PS软件界面不显示、PS无法打开,解决方法
  18. 【AI Studio平台基本操作】算力卡的使用获取及有关内容
  19. 部署Kubernetes集群+Dashboard可视化页面-1.18.6版本
  20. 多可文档管理系统的手机版

热门文章

  1. nginx .conf
  2. 3.2 神经网络表示
  3. c ++ helloworld
  4. Ubuntu 安装R/Rstudio
  5. Java设计模式学习总结(16)——行为型模式之命令模式
  6. mysql 登录默认实例_【MySQL案例】mysql本机登录-S失灵_mysql
  7. 实验一 分治与递归—整数划分 java实现
  8. 原生input和onchange
  9. 【Mybatis】foreach标签在mybatis中的使用
  10. D3DXMatrixMultiply 函数