/*
* Leetcode13. Roman to Integer
* Funtion: Given a roman numeral, convert it to an integer.
* Example: I -> 1
II -> 2
III -> 3
IV -> 4
...
C -> 100
M -> 1000
MCM -> 1900
* Author: LKJ
* Date:2016/7/26
* Hint: 计数规则:
1. 若干相同数字连写表示的数是这些罗马数字的和,如 III=3;
2. 小数字在大数字前面表示的数是用大数字减去小数字,如 IV=4;
3. 小数字在大数字后面表示的数是用大数字加上小数字,如 VI=6;
*/
#include <iostream>
#include <vector>
#include <map>
using namespace std;
class Solution {
public:
int romanToInt(string s) {
map<char,int> roman;
roman.insert(pair<char,int> ('I',1));
roman.insert(pair<char,int> ('V',5));
roman.insert(pair<char,int> ('X',10));
roman.insert(pair<char,int> ('L',50));
roman.insert(pair<char,int> ('C',100));
roman.insert(pair<char,int> ('D',500));
roman.insert(pair<char,int> ('M',1000));
int len = s.size();
int result = 0;
for(int i = 0; i < len; i++){
if(roman[s[i+1]] > roman[s[i]]){
result -= roman[s[i]];
}else{
result += roman[s[i]];
}
}
return result;
}
};
int main(){
string myin;
int myout;
Solution SA;
cout << "Please Enter" << endl;
cin >> myin;
myout = SA.romanToInt(myin);
cout << myout << endl;
return 0;
}
LeetCode 简单操作 | 13. Roman to Integer
最新推荐文章于 2022-03-19 13:18:35 发布
本文介绍了一个将罗马数字转换为整数的C++程序实现。该程序通过解析输入的罗马数字字符串并应用特定的计数规则来计算其对应的整数值。文章提供了完整的代码示例,包括如何使用映射(map)来存储罗马数字与整数之间的对应关系。
847

被折叠的 条评论
为什么被折叠?



