# leetcode 013 —— Roman to Integer

132人阅读 评论(0)

Given a roman numeral, convert it to an integer.

Input is guaranteed to be within the range from 1 to 3999.

class Solution {
public:
int romanToInt(string s){
vector<string> vec_ge = { "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX" };
vector<string> vec_shi = { "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC" };
vector<string> vec_bai = { "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM" };
int i = 0;
while (s[i] == 'M')
i++;
int qian = i;
s.erase(0, i);

i = 0;
while (s[i] == 'C' || s[i] == 'D' || s[i] == 'M')
i++;
string s1(s, 0, i);
int bai = search(s1, vec_bai);
s.erase(0, i);

i = 0;
while (s[i] == 'X' || s[i] == 'L' || s[i] == 'C')
i++;
string s2(s, 0, i);
int shi = search(s2, vec_shi);
s.erase(0, i);

i = 0;
while (s[i] == 'I' || s[i] == 'V' || s[i] == 'X')
i++;
string s3(s, 0, i);
int ge = search(s3, vec_ge);

return 1000 * qian + 100 * bai + 10 * shi + ge;

}

int search(string mstr, vector<string> mvec){
for (int i = 0; i < 9; i++){
if (mvec[i] == mstr)
return i + 1;
}
return 0;
}
};

0
0

* 以上用户言论只代表其个人观点，不代表CSDN网站的观点或立场
个人资料
• 访问：25946次
• 积分：2054
• 等级：
• 排名：第18667名
• 原创：188篇
• 转载：0篇
• 译文：0篇
• 评论：1条
阅读排行
评论排行
最新评论