Given a roman numeral, convert it to an integer.

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

思路:有关罗马数字的相关知识可见博客Integer to roman。从左往右遍历字符串,比较当前为和下一位的值,若是当前数字比下一位大,或者当当前数字为最后时,则加上当前数字,否则减去当前数字。这就遇到一个问题,罗马数字的字符串不是按26个字母顺序来的,如何确定大小。解决办法一:写一个函数,将罗马数字转换成整数,然后进行比较;解法二,可以使用map数据结构,将罗马数字的字母转换成对应的整数值。

方法一的代码如下:

 class Solution {
public:
int romanToInt(string s)
{
int res=; //记得初始化
for(int i=;i<s.size();++i)
{
if(i==s.size()-||strToNum(s[i])>=strToNum(s[i+]))
res+=strToNum(s[i]);
else
res-=strToNum(s[i]);
}
return res;
} int strToNum(const char c)
{
int num=;
switch(c)
{
case 'M':
num=;
break;
case 'D':
num=;
break;
case 'C':
num=;
break;
case 'L':
num=;
break;
case 'X':
num=;
break;
case 'V':
num=;
break;
case 'I':
num=;
break;
default:
num=;
}
return num;
}
};

方法二:

 class Solution {
public:
int romanToInt(string s) {
int res = ;
unordered_map<char, int> m{{'I', }, {'V', }, {'X', }, {'L', }, {'C', }, {'D', }, {'M', }};
for (int i = ; i < s.size(); ++i)
{ if (i == s.size() - || m[s[i]] >= m[s[i+]])
res += m[s[i]];
else
res -= m[s[i]];
}
return res;
}
};

最新文章

  1. java中HashMap重要性质和优化总结
  2. [c++] vector的使用
  3. java操作excel文件
  4. 最短路径--SPFA 算法
  5. (一) 从零开始搭建Spark Standalone集群环境搭建
  6. php,javscript调用百地图度API实现标记
  7. SQL Server查询所有用户表
  8. 04_XML_04_XMLDTD语法
  9. BDIA增强
  10. 关闭HTC手机充电时屏幕一直亮着绿色电池的办法
  11. rsync+inotify实现数据的实时备份
  12. (1)Phonics自然拼读 英语动画 Fun with Phonics 国际主流英语教学法
  13. node.js vue-axios和vue-resource
  14. 【C++ 实验5 类和对象】
  15. git学习笔记——廖雪峰git教程
  16. JAVA常用的异常处理情况
  17. Java 解决 servlet 接收参数中文乱码问题
  18. 解决Android4.3版本下,手机短彩接收中文文件名附件,中文名字的附件无法保存(第二步:解决从从数据库中读取附件文件名,并在长按后保存附件时,中文乱码导致的无法保存附件)
  19. Elasticsearch系列(五)----JAVA客户端之TransportClient操作详解
  20. spring4声明式事务&mdash;02 xml配置方式

热门文章

  1. 方别《QQ群霸屏技术》,又见《QQ群建群细则》
  2. mysql中tinyint、smallint、mediumint,int 和bigint 的区别
  3. git上下载的thinkphp框架报错解决方法
  4. PHP教程专题资源免费下载地址收藏
  5. SAP ABAP Development Tools in Eclipseのセットアップ
  6. Django调试models输出的SQL语句
  7. SharePoint显示错误信息
  8. Linux复制和移动文件
  9. python接口测试(三)——Excell文件读取进行参数化
  10. 如何用Fiddler 拦住RestAssured发出的请求