13.罗马数字转化为整型
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.罗马数字转化为整型相关推荐
- 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 符号位 百位 ...
- 将字符型的数字转化为整型
'1'的ASCII 值为 49 '0'的ASCII 值为 48 将字符型数字 '1' 转化为 整型数字 1 : '1'-'0'=1 相当于49-48 = 1
- 课程作业1:字符型强制转化为整型
设计思想:题目要求是从命令行中接受多个数字,求和.而我们知道命令行中的输入的数据类型是字符型,所以必须转化为整型才能相加.所以我们的思路是:在输入字符串后,用for循环依次强制转化为整型,然后依次相加 ...
- 列表中的字符串成员 转化为 整型成员 。如:将[‘2‘, ‘1‘] 转化为:[2, 1]、map()返回的是一个可迭代对象内存地址、join(可迭代对象),要注意:可迭代对象中的成员必须是字符串类型
注意: 1.map()返回的是一个可迭代对象的内存地址,如果要看它具体的值,有两种方式: 法1:在map()前面,加list( ).tuple( ).set( ),将它强制转化为列表.元组.集合类型. ...
- 剑指offer面试题[49]-把字符串转化为整型
题目: 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数. 数值为0或者字符串不是一个合法的数值则返回0 输入描述: 输入一个字符串,包括数字字母符号,可以为空. 输出描述: 如果是合法 ...
- 字符串转化为整型,为0,而不是1
<?php $str = 'AAA';//NaN,undefined----int后都为0; echo (int)$str;//0 转载于:https://www.cnblogs.com/pan ...
- java把字符转化为整型_Java开发笔记(三十二)字符型与整型相互转化
前面提到字符类型是一种新的变量类型,然而编码实践的过程中却发现,某个具体的字符值居然可以赋值给整型变量!就像下面的例子代码那样,把字符值赋给整型变量,编译器不但没报错,而且还能正常运行! // 字符允 ...
- Java 字符,整型,字符串三者转换
1.整型 -> 字符型 先把整型转化为字符串,再把字符串转化为字符 //整型 ---> 字符型 toString(int n).charAt(int index) System.out.p ...
- jmeter断言beanshell判断日期/整型大小比较
有关beanshell的断言: Failure = false; -----表示断言成功, FailureMessage = "......"" ; ----自定义的成功 ...
最新文章
- python生成试卷制卷系统_Python 读写文件 小应用:生成随机的测验试卷文件
- 程序员提交代码的 emoji 指南——原来表情文字不能乱用
- 关于Android adb实现框架和应用
- http_load安装与测试参数分析
- CentOS下C++开发环境搭建
- 关于初学Go的一些总结
- Linux下安装Python3.6和第三方库
- MFC和c#中模拟对另一进程的窗口按钮点击
- java面试题_阿里大厂流出的数百道 Java 经典面试题
- 楚留香ai人脸识别_戴口罩居然也能人脸识别?这些AI黑科技真的藏不住了.........
- Android 数据库框架 DBFlow 的使用
- 博客园的博客中插入公式
- 后端用java还是python_【后端开发】已学php再学java还是python?
- Oracle磁带机扩容方案,IBM TS3500带库磁带机扩容方案.doc
- sqlite3数据库报错:“打不开数据库文件”
- php后台登录验证(含验证码)
- 号码被标记,各平台取消方法
- 自己小米4c 高通9008模式刷机 低版本 亲测有效
- macd是什么意思,详析MACD是什么意思
- PUBWIN密码攻防战 打造永攻不破的密码!(转)
热门文章
- WAL (Write-Ahead Logging )
- 599就能照靓你的美!年轻就该放纵自High
- java arraydeque poll,Java ArrayDeque
- php+mysql求职招聘人才网站
- vue项目中如何使用百度三方分享
- 亚马逊、lazada、eBay、shopee、wish、速卖通、沃尔玛、mercari、Newegg、阿里国际、Tik Tok怎么测评才比较安全?
- SQLite数据库学习笔记1:报错:The database disk image is malformed
- c语言滤去所有非数字字符,Python: 去掉字符串中的非数字(或非字母)字符
- sql 语句 增加列,在指定列后面添加列
- cmd获取python返回值