LeetCode学习(2) 将罗马数字转换为数字
2017-10-21 18:48
369 查看
1.罗马数字表示如下:
I- 1 II - 2 III - 3IV - 4V – 5VI - 6VII – 7VIII - 8IX - 9X – 10
XI – 11XII – 12XIII – 13XIV – 14XV – 15XVI – 16XVII – 17
XVIII – 18 XIX – 19 XX – 20 XXVIII - 28 XXX - 30
XL - 40 L - 50LX - 60LXX - 70LXXX - 80XC - 90XCIX - 99
C - 100
2.罗马数字只有7个字母组成,每个字母代码的字如下
字母 M D C L X V I
代表数字1000 500 100 50 10 5 1
I- 1 II - 2 III - 3IV - 4V – 5VI - 6VII – 7VIII - 8IX - 9X – 10
XI – 11XII – 12XIII – 13XIV – 14XV – 15XVI – 16XVII – 17
XVIII – 18 XIX – 19 XX – 20 XXVIII - 28 XXX - 30
XL - 40 L - 50LX - 60LXX - 70LXXX - 80XC - 90XCIX - 99
C - 100
2.罗马数字只有7个字母组成,每个字母代码的字如下
字母 M D C L X V I
代表数字1000 500 100 50 10 5 1
//c++ VS2013环境 #include<iostream> using namespace std; int getNum(char c) { switch (c) { 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; } } int romanToInt(string s) { // Start typing your C/C++ solution below // DO NOT write int main() function int result = 0; for (int i = 0; i<s.size(); i++) { result += getNum(s[i]); } int pre = 0; int cur = getNum(s[0]); for (int i = 1; i<s.size(); i++) { pre = cur; cur = getNum(s[i]); if ((pre * 5 == cur) || (pre * 10 == cur)) { result -= 2 * pre; } } return result; } int romantoInt(string s) { int tagVal[256]; tagVal['I'] = 1; tagVal['V'] = 5; tagVal['X'] = 10; tagVal['C'] = 100; tagVal['M'] = 1000; tagVal['L'] = 50; tagVal['D'] = 500; int val = 0; for(int i = 0; i < s.length(); i++){ if(i+1 >= s.length() || tagVal[s[i+1]] <= tagVal[s[i]]) val += tagVal[s[i]]; else val -= tagVal[s[i]]; } return val; } int main() { string s = "VII"; cout<<romanToInt(s); //cout<<romantoInt(s);第二种方式进行转换 cout << endl; return 0; }
相关文章推荐
- 【leetcode】第12题:将数字转换成罗马数字
- leetcode excel表格列标题数字与字符串的转换
- 【C++】将罗马数字转换成阿拉伯数字
- leetcode刷题笔记之罗马数字转化为数字
- 学习笔记 数字时间戳js中转换为日期时间
- C++之罗马数字转换为整型数字(12)---《那些奇怪的算法》
- String to Integer(字符串转换成数字—leetcode)
- Java学习小试牛刀之数字金额转换为人民币大写
- javascript学习 - 数字和字符串转换
- boost lexical_cast 字符串数字间的字面转换(学习笔记)
- [学习笔记]Java将数字金额转换为中文金额
- 罗马数字转换阿拉伯数字(Java版,考虑较为全面)
- boost lexical_cast 字符串数字间的字面转换(学习笔记)
- leetcode 罗马数字与整数的转换算法
- LeetCode Excel Sheet Column Title(表格列数数字到英文转换)
- [C++]LeetCode 12: Integer to Roman(将整数转换为罗马数字)
- 数字转换为罗马数字
- [java学习]数字与字符串的相互转换
- JavaScript练习 - 数字转换成罗马数字
- [LeetCode]—String to Integer (atoi) 字符串转换为数字