Roman to Integer and Integer to Roman
来源:互联网 发布:大数据 客户画像 编辑:程序博客网 时间:2024/04/29 14:22
Roman to Integer
Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
Subscribe to seewhich companies asked this question.
Solving problemsusing C++
class Solution{
public:
int romanToInt(string s) {
// Add yours code
}
};
/*Author:杨柳Date:2017/5/4 IDE:DEV-c++ 罗马数字规则:1, 罗马数字共有7个,即I(1)、V(5)、X(10)、L(50)、C(100)、D(500)和M(1000)。罗马数字中没有"0"。2, 重复次数:一个罗马数字最多重复3次。3, 右加左减:在较大的罗马数字的右边记上较小的罗马数字,表示大数字加小数字。在较大的罗马数字的左边记上较小的罗马数字,表示大数字减小数字。4, 左减的数字有限制,仅限于I、X、C,且放在大数的左边只能用一个。(*) V 和 X 左边的小数字只能用Ⅰ。(*) L 和 C 左边的小数字只能用X。(*) D 和 M 左 边的小数字只能用C。用户输入一个数字,遍历这个数字,sum计算和,如果前一个数字大于后一个直接相加,如果小于后一个数字,加和用sum减去前一个较小的数字的两倍 例如:MCMLXX 代表1970 M>C sum=1000+100 C<M sum=sum+1000-100*2 M>L sum=sum+50 L>X sum=sum+20 X=X sum=sum+20 */#include<stdio.h>#include<string>#include<iostream>using namespace std;class Solution { public: int romanToInt(string s) { int sum=changeint(s[0]); for (int i = 0; i < s.length()-1; i++) { if (changeint(s[i]) < changeint(s[i+1])) { sum += changeint(s[i+1]) - 2 * changeint(s[i]); // 如果i比i+1小的话,则将总和sum减去i这个地方数的两倍,同时加上i+1 } else { sum += changeint(s[i+1]); // 如果,i比i+1大的话,直接相加 } } return sum; } int changeint(char ch) { switch (ch) { case 'I': return 1; case 'V': return 5; case 'X': return 10; case 'L': return 50; case 'C': return 100; case 'D': return 500; case 'M': return 1000; } }// 阿拉伯数字转罗马数字/*string IntToroman(int num){ string sum; if (num >= 1000) { sum += changeroman(num - num % 1000); num %= 1000; } if (num >= 100) { sum += changeroman(num - num % 100); num %= 100; } if (num >= 10) { sum += changeroman(num - num % 10); num %= 10; } sum += changeroman(num); return sum; } string changeroman(int num) { switch(num) { case 1: return "I"; case 2: return "II"; case 3: return "III"; case 4: return "IV"; case 5: return "V"; case 6: return "VI"; case 7: return "VII"; case 8: return "VIII"; case 9: return "IX"; case 10: return "X"; case 20: return "XX"; case 30: return "XXX"; case 40: return "XL"; case 50: return "L"; case 60: return "LX"; case 70: return "LXX"; case 80: return "LXXX"; case 90: return "XC"; case 100: return "C"; case 200: return "CC"; case 300: return "CCC"; case 400: return "CD"; case 500: return "D"; case 600: return "DC"; case 700: return "DCC"; case 800: return "DCCC"; case 900: return "CM"; case 1000: return "M"; case 2000: return "MM"; case 3000: return "MMM"; } }*/ //阿拉伯数字转罗马数字(方法二) string IntToroman(int num){char ch[][10] ={ "", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX" , "", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC" , "", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM" , "", "M", "MM", "MMM", "", "",}; string sum = ch[3][num / 1000] + ch[2][num % 1000 / 100] +ch[1][num % 100 / 10] +ch[0][num % 10]; return sum;}}; int main(){Solution sl;string str;int num; cout<<"罗马字符转化为阿拉伯数字"<<endl;cout<<"请输入一个罗马数字:"<<endl;cin>>str;cout<<"罗马数字所对应的阿拉伯数字为:"<<endl; cout<<sl.romanToInt(str)<<endl; cout<<"请输入一个阿拉伯数字:"<<endl;cin>>num;cout<<"阿拉伯数字所对应的罗马数字为:"<<endl; cout<<sl.IntToroman(num);}
0 0
- Integer to Roman and Roman to Integer
- "Roman to Integer" and "Integer to Roman"
- Roman to Integer and Integer to Roman
- [LeetCode] Roman to Integer and Integer to Roman
- [LeetCode]Integer to Roman AND ROman to Integer
- LeetCode]Integer to Roman AND ROman to Integer
- [LeetCode/LinkedIn] Integer to Roman and roman number to Integer
- integer-to-roman and roman-to-integer罗马数字转换
- Integer to Roman & Roman to Integer
- Integer to Roman & Roman to Integer
- LeetCode Roman to Integer && Integer to Roman
- 【leetcode】Roman to Integer | Integer to Roman
- Leetcode - "Roman to Integer" & "Integer to Roman"
- LeetCode:Roman to Integer,Integer to Roman
- LeetCode Integer to Roman & Roman to Integer
- Roman to Integer/Integer to Roman
- leetcode - roman to integer & integer to roman
- Roman to Integer &&Integer to Roman
- 数组函数
- 1.1.ARM裸机第一部分-ARM那些你得知道的事儿
- 判断一个数是否为平方数
- acm之Time
- GDI学习1
- Roman to Integer and Integer to Roman
- Android平台网络常用命令
- Dockerfile文件编写官方文档
- 平分红酒
- Binder-Binder简介
- python3.5的lxml中没有etree模块的问题解决方法
- python学习之路——函数关于可变对象和不可变对象问题
- springMVC控制器的配置
- 接口