您的位置:首页 > 编程语言 > C语言/C++

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;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息