[InterviewBit] Roman To Integer

Roman To Integer

  • Time :
  • Space :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
int Solution::romanToInt(string s) {
unordered_map<char, int> roman = {
{'I', 1},
{'V', 5},
{'X', 10},
{'L', 50},
{'C', 100},
{'D', 500},
{'M', 1000},
};
unordered_map<char, map<char, int>> roman2 = {
{'I', {{'V', 4}, {'X', 9}}},
{'X', {{'L', 40}, {'C', 90}}},
{'C', {{'D', 400}, {'M', 900}}}};
int res = 0, n = s.length();
for (int i = 0; i < n; i++) {
if (i < n - 1) {
if(roman2[s[i]][s[i+1]]) {res += roman2[s[i]][s[i+1]]; i++;}
else res += roman[s[i]];
} else {
res += roman[s[i]];
}
}
return res;
}

Author: Song Hayoung
Link: https://songhayoung.github.io/2022/09/28/PS/interviewbit/roman-to-integer/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.