[string]Roman to Integer,Integer to Roman
一.Roman to Integer
Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
- 相同的数字连写,所表示的数等于这些数字相加得到的数,如:Ⅲ = 3;
- 小的数字在大的数字的右边,所表示的数等于这些数字相加得到的数, 如:Ⅷ = 8;Ⅻ = 12;
- 小的数字,(限于Ⅰ、X 和C)在大的数字的左边,所表示的数等于大数减小数得到的数,如:Ⅳ= 4;Ⅸ= 9;
V 和 X 左边的小数字只能用Ⅰ。
L 和 C 左边的小数字只能用X。
D 和 M 左 边的小数字只能用C。
- 正常使用时,连写的数字重复不得超过三次。(表盘上的四点钟“IIII”例外)
- 在一个数的上面画一条横线,表示这个数扩大1000倍。
class Solution {
public:
int romanToInt(string s) {
// Ⅰ(1)、X(10)、C(100)、M(1000)、V(5)、L(50)、D(500)
int values[] ={
,,,,,,,,,,,,,,,,,,,,,,,,,
};
int size = s.size();
int res = ;
for(int i=;i<size;i++){
if(i+<size){
if(values[s[i]-'A'] >= values[s[i+]-'A'])
res += values[s[i]-'A'];
else
res -= values[s[i]-'A'];
}else{
res += values[s[i]-'A'];
}
}
return res;
}
};
二.Integer to Roman
Given an integer, convert it to a roman numeral.
Input is guaranteed to be within the range from 1 to 3999.
class Solution {
public:
string digitToRoman(int digit,int base,string kvs[][])
{
string res;
switch(digit){
case : res = kvs[base][digit];break;
case : res += kvs[base][];res += kvs[base][];res += kvs[base][];res += kvs[base][];break;
case : res += kvs[base][];res += kvs[base][];res += kvs[base][];break;
case : res += kvs[base][];res += kvs[base][];break;
case : res = kvs[base][];break;
case : res = kvs[base][];break;
case : res += kvs[base][];res += kvs[base][];res += kvs[base][];break;
case : res += kvs[base][];res += kvs[base][];break;
case : res += kvs[base][];break;
default: res="";
}
return res;
}
string intToRoman(int num) {
string kvs[][];
kvs[][] = "I"; kvs[][]="IV"; kvs[][]="V"; kvs[][]="IX";
kvs[][] = "X";kvs[][] = "XL"; kvs[][]="L"; kvs[][]="XC";
kvs[][] = "C"; kvs[][] = "CD"; kvs[][]="D"; kvs[][]="CM";
kvs[][] = "M";
int d = num%;num/=;//个
int c = num%;num/=;//十
int b = num%;num/=;//百
int a = num%;num/=;//千
string res =digitToRoman(a,,kvs)+digitToRoman(b,,kvs)+digitToRoman(c,,kvs)+digitToRoman(d,,kvs);
return res;
}
};
[string]Roman to Integer,Integer to Roman的更多相关文章
- 【LeetCode】Roman to Integer & Integer to Roman
Roman to Integer Given a roman numeral, convert it to an integer. Input is guaranteed to be within t ...
- LeetCode:Roman to Integer,Integer to Roman
首先简单介绍一下罗马数字,一下摘自维基百科 罗马数字共有7个,即I(1).V(5).X(10).L(50).C(100).D(500)和M(1000).按照下述的规则可以表示任意正整数.需要注意的是罗 ...
- Roman to Integer && Integer to Roman 解答
Roman Numeral Chart V:5 X:10 L:50 C:100 D:500 M:1000 规则: 1. 重复次数表示该数的倍数2. 右加左减:较大的罗马数字右边记上较小的罗马数字,表示 ...
- Roman to Integer & Integer to Roman
题目: Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from ...
- Java基础之引用(String,char[],Integer)总结
1.String的引用: 下列代码执行后的结果为: public class Test { public static void main(String[] args) { StringBuffer ...
- java中的BigDecimal和String的相互转换,int和String的类型转换,Integer类和String相互转换
一: /*由数字字符串构造BigDecimal的方法 *设置BigDecimal的小数位数的方法 */ 注:BigDecimal在数据库中存的是number类型. import java.math.B ...
- 批量删除以及将String数组转换成Integer数组的奇淫技巧
首先在pom.xml文件添加依赖: <!-- bean工具 --> <dependency> <groupId>commons-beanutils</grou ...
- Java基础之引用(String,char[],Integer)总结于牛客网的专项练习题
1.String的引用: 下列代码执行后的结果为: public class Test { public static void main(String[] args) { StringBuffer ...
- String,int,Integer之间的转换
public class Test{ public static void main(String[] args) { //int转换成Integer Integer in = new Integer ...
随机推荐
- FineUI
window间传值: Window1.GetSaveStateReference(new string[] { TextBox1.ClientID, ak.ClientID })收 ActiveWin ...
- Js触发ASP.NET Validation控件的验证, 同时获取前台验证结果(不包括CustomValidator)
function CallValidate(group) { if (typeof (Page_ClientValidate) == "function") { Page_Bloc ...
- <runtime> 的 <assemblyBinding> 元素
一.<assemblyBinding> 元素 包含有关程序集版本重定向和程序集位置的信息. <assemblyBinding xmlns="urn:schemas-micr ...
- 动态加载Ribbon功能区
上下文选项卡对新UI的功能提供了极大的推进作用.当用户对某对象执行特定的任务时就会出现特定的选项卡.例如,在Excel中处理图表时,一个上下文选项卡提供用于图表处理的额外选项.本文将介绍创建和执行这些 ...
- cisco asa5520 IOS故障恢复
在ASA5520上误删除了IOS 把一台电脑IP 设置成192.168.2.2 255.255.255.0 把IOS的BIN文件复制到这台电脑上,并安装一个CISCO TFTP SERVER V1.1 ...
- windows驱动编程入门(第一个程序)
1. 工具 vc6.0 WINDDK 3790.1830 Dbgview 驱动加载工具InstDrv32位/64位中文版 2. 代码 first.c /// /// @file first.c /// ...
- 从汇编看c++中的虚拟继承及内存布局(二)
下面是c++源码: class Top {//虚基类 public: int i; Top(int ii) { i = ii; } virtual int getTop() { cout <&l ...
- asp.net后台向前端输出js脚本的三种方法
//这个方法最快,因为它会输出到html标签之前 Response.Write("<script type='text/javascript'>alert('这个最快')< ...
- 1 起步-Pro Git---VCS比较、git基本原理、git配置
本地版本控制系统 集中化的版本控制系统 诸如 CVS,Subversion 以及 Perforce 等,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务 ...
- Qt5-MSVC2012-qDebug中文乱码解决方法
1.首先看代码: int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; w.show(); qDeb ...