Roman to Integer
2016-07-13 20:46
357 查看
题目描述:
Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
AC代码如下:
class Solution{
public:
int romanToInt(string s){
vector<string> unit = { "", "I", "II", "III", "IV",
"V", "VI", "VII", "VIII", "IX" };
vector<string> ten = { "", "X", "XX", "XXX", "XL",
"L", "LX", "LXX", "LXXX", "XC" };
vector<string> hundred = { "", "C", "CC", "CCC", "CD",
"D", "DC", "DCC", "DCCC", "CM" };
vector<string> thousand = { "", "M", "MM", "MMM" };
int ans = 0;
int size = s.size();
int flag = 0;
for (int i = 0; i < size;){
for (int j = thousand.size() - 1; j>0; j--){
if (s.find(thousand[j], i) == i){
ans = ans + j * 1000;
i = i + thousand[j].size();
break;
}
}
for (int j = hundred.size() - 1; j>0; j--){
if (s.find(hundred[j], i) == i){
ans = ans + j * 100;
i = i + hundred[j].size();
break;
}
}
for (int j = ten.size() - 1; j>0; j--){
if (s.find(ten[j], i) == i){
ans = ans + j * 10;
i = i + ten[j].size();
break;
}
}
for (int j = unit.size() - 1; j>0; j--){
if (s.find(unit[j], i) == i){
ans = ans + j;
i = i + unit[j].size();
break;
}
}
}
return ans;
}
};
Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
AC代码如下:
class Solution{
public:
int romanToInt(string s){
vector<string> unit = { "", "I", "II", "III", "IV",
"V", "VI", "VII", "VIII", "IX" };
vector<string> ten = { "", "X", "XX", "XXX", "XL",
"L", "LX", "LXX", "LXXX", "XC" };
vector<string> hundred = { "", "C", "CC", "CCC", "CD",
"D", "DC", "DCC", "DCCC", "CM" };
vector<string> thousand = { "", "M", "MM", "MMM" };
int ans = 0;
int size = s.size();
int flag = 0;
for (int i = 0; i < size;){
for (int j = thousand.size() - 1; j>0; j--){
if (s.find(thousand[j], i) == i){
ans = ans + j * 1000;
i = i + thousand[j].size();
break;
}
}
for (int j = hundred.size() - 1; j>0; j--){
if (s.find(hundred[j], i) == i){
ans = ans + j * 100;
i = i + hundred[j].size();
break;
}
}
for (int j = ten.size() - 1; j>0; j--){
if (s.find(ten[j], i) == i){
ans = ans + j * 10;
i = i + ten[j].size();
break;
}
}
for (int j = unit.size() - 1; j>0; j--){
if (s.find(unit[j], i) == i){
ans = ans + j;
i = i + unit[j].size();
break;
}
}
}
return ans;
}
};
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- 关于指针的一些事情
- c++ primer 第五版 笔记前言
- share_ptr的几个注意点
- Lua中调用C++函数示例
- Lua教程(一):在C++中嵌入Lua脚本
- Lua教程(二):C++和Lua相互传递数据示例
- C++联合体转换成C#结构的实现方法
- C++高级程序员成长之路
- C++编写简单的打靶游戏
- C++ 自定义控件的移植问题
- C++变位词问题分析
- C/C++数据对齐详细解析
- C++基于栈实现铁轨问题
- C++中引用的使用总结
- 使用Lua来扩展C++程序的方法
- C++中调用Lua函数实例
- Lua和C++的通信流程代码实例
- C++的template模板中class与typename关键字的区别分析
- C与C++之间相互调用实例方法讲解