Roman to Integer

问题描述:

Given a roman numeral, convert it to an integer.

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

知识补充:

学习unordered_map:

unordered_map和python里的字典很相似,可以实现key-value对应。可以通过key快速索引到value。unordered_map和map的区别是不会根据key的大小进行排序。

#include <unordered_map>
//引入unordered_map时有如下错误
//error This file requires compiler and library support for the ISO C++ 2011 standard.
//解决方法:工程上右键,选择build options,在compiler settings里面,选择c++0x支持。
unordered_map<char, int> T = { { 'I' , 1 }};//初始化key为char型,value为int型
T['W']=31;//插入数据
cout<<T['W']<<endl;//直接访问键对应的值,如果没有访问到,返回0
//找到key值为2的键值对
typedef unordered_map<int,int> mymap;
mymap T;
if( T.find(x)!=T.end() ){cout<<"get data where key=2! and data="<<T[x]<<endl;}
//遍历hash table
for( mymap::iterator iter=T.begin();iter!=T.end();iter++ ){cout<<"key="<<iter->first<<" and value="<<iter->second<<endl;}

测试代码(c++):

int romanToInt(string roman) {int number = 0;int i = roman.size()-1;while(i>0){if(roman[i]=='I'){number = number + 1;}else if(roman[i]=='V'){if(roman[i-1]=='I'){number = number + 4;i = i-2;continue;}number = number + 5;}else if(roman[i]=='X'){if(roman[i-1]=='I'){number = number + 9;i = i-2;continue;}number = number + 10;}else if(roman[i]=='L'){if(roman[i-1]=='X'){number = number + 40;i = i-2;continue;}number = number + 50;}else if(roman[i]=='C'){if(roman[i-1]=='X'){number = number + 90;i = i-2;continue;}number = number + 100;}else if(roman[i]=='D'){if(roman[i-1]=='C'){number = number + 400;i = i-2;continue;}number = number + 500;}else{if(roman[i-1]=='C'){number = number + 900;i = i-2;continue;}number = number + 1000;}--i;}if(i==0){if(roman[0]=='I'){number += 1;}else if(roman[0]=='V'){number += 5;}else if(roman[0]=='X'){number += 10;}else if(roman[0]=='L'){number += 50;}else if(roman[0]=='C'){number += 100;}else if(roman[0]=='D'){number += 500;}else {number += 1000;}        }
return number;}

性能:

测试代码(Python):

def romanToInt(self, s):""":type s: str:rtype: int"""number = 0roman = {'I':1,'V':5,'X':10,'L':50,'C':100,'D':500,'M':1000}number = number + roman[s[-1:]]for i in range(len(s)-2,-1,-1):if(roman[s[i]]>=roman[s[i+1]]):number = number + roman[s[i]]else:number = number - roman[s[i]]return number

性能:

参考代码(c++):

int romanToInt(string s)
{unordered_map<char, int> T = { { 'I' , 1 },{ 'V' , 5 },{ 'X' , 10 },{ 'L' , 50 },{ 'C' , 100 },{ 'D' , 500 },{ 'M' , 1000 } };int sum = T[s.back()];for (int i = s.length() - 2; i >= 0; --i) {if (T[s[i]] < T[s[i + 1]]){sum -= T[s[i]];}else{sum += T[s[i]];}}return sum;
}

性能:

13.罗马数字转化为整型相关推荐

  1. Python处理字符串数据将其转化为整型数据

    这是读取到的CAN数据段:x| 00 02 51 00 01 05 00 00 0 0 0 2 5 1 0 0 0 1 0 5 0 0 0 0 符号位  百位 十位 个位 .0 .00 符号位 百位 ...

  2. 将字符型的数字转化为整型

    '1'的ASCII 值为 49 '0'的ASCII 值为 48 将字符型数字 '1' 转化为 整型数字 1 : '1'-'0'=1 相当于49-48 = 1

  3. 课程作业1:字符型强制转化为整型

    设计思想:题目要求是从命令行中接受多个数字,求和.而我们知道命令行中的输入的数据类型是字符型,所以必须转化为整型才能相加.所以我们的思路是:在输入字符串后,用for循环依次强制转化为整型,然后依次相加 ...

  4. 列表中的字符串成员 转化为 整型成员 。如:将[‘2‘, ‘1‘] 转化为:[2, 1]、map()返回的是一个可迭代对象内存地址、join(可迭代对象),要注意:可迭代对象中的成员必须是字符串类型

    注意: 1.map()返回的是一个可迭代对象的内存地址,如果要看它具体的值,有两种方式: 法1:在map()前面,加list( ).tuple( ).set( ),将它强制转化为列表.元组.集合类型. ...

  5. 剑指offer面试题[49]-把字符串转化为整型

    题目: 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数. 数值为0或者字符串不是一个合法的数值则返回0 输入描述: 输入一个字符串,包括数字字母符号,可以为空. 输出描述: 如果是合法 ...

  6. 字符串转化为整型,为0,而不是1

    <?php $str = 'AAA';//NaN,undefined----int后都为0; echo (int)$str;//0 转载于:https://www.cnblogs.com/pan ...

  7. java把字符转化为整型_Java开发笔记(三十二)字符型与整型相互转化

    前面提到字符类型是一种新的变量类型,然而编码实践的过程中却发现,某个具体的字符值居然可以赋值给整型变量!就像下面的例子代码那样,把字符值赋给整型变量,编译器不但没报错,而且还能正常运行! // 字符允 ...

  8. Java 字符,整型,字符串三者转换

    1.整型 -> 字符型 先把整型转化为字符串,再把字符串转化为字符 //整型 ---> 字符型 toString(int n).charAt(int index) System.out.p ...

  9. jmeter断言beanshell判断日期/整型大小比较

    有关beanshell的断言: Failure = false; -----表示断言成功, FailureMessage = "......"" ; ----自定义的成功 ...

最新文章

  1. python生成试卷制卷系统_Python 读写文件 小应用:生成随机的测验试卷文件
  2. 程序员提交代码的 emoji 指南——原来表情文字不能乱用
  3. 关于Android adb实现框架和应用
  4. http_load安装与测试参数分析
  5. CentOS下C++开发环境搭建
  6. 关于初学Go的一些总结
  7. Linux下安装Python3.6和第三方库
  8. MFC和c#中模拟对另一进程的窗口按钮点击
  9. java面试题_阿里大厂流出的数百道 Java 经典面试题
  10. 楚留香ai人脸识别_戴口罩居然也能人脸识别?这些AI黑科技真的藏不住了.........
  11. Android 数据库框架 DBFlow 的使用
  12. 博客园的博客中插入公式
  13. 后端用java还是python_【后端开发】已学php再学java还是python?
  14. Oracle磁带机扩容方案,IBM TS3500带库磁带机扩容方案.doc
  15. sqlite3数据库报错:“打不开数据库文件”
  16. php后台登录验证(含验证码)
  17. 号码被标记,各平台取消方法
  18. 自己小米4c 高通9008模式刷机 低版本 亲测有效
  19. macd是什么意思,详析MACD是什么意思
  20. PUBWIN密码攻防战 打造永攻不破的密码!(转)

热门文章

  1. WAL (Write-Ahead Logging )
  2. 599就能照靓你的美!年轻就该放纵自High
  3. java arraydeque poll,Java ArrayDeque
  4. php+mysql求职招聘人才网站
  5. vue项目中如何使用百度三方分享
  6. 亚马逊、lazada、eBay、shopee、wish、速卖通、沃尔玛、mercari、Newegg、阿里国际、Tik Tok怎么测评才比较安全?
  7. SQLite数据库学习笔记1:报错:The database disk image is malformed
  8. c语言滤去所有非数字字符,Python: 去掉字符串中的非数字(或非字母)字符
  9. sql 语句 增加列,在指定列后面添加列
  10. cmd获取python返回值