Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <list>
- class Solution
- {
- public:
- list<int> t;
- int sumchar(char c)
- {
- switch (c)
- {
- case 'I':
- return 1;
- case 'V':
- return 5;
- case 'X':
- return 10;
- case 'L':
- return 50;
- case 'C':
- return 100;
- case 'D':
- return 500;
- case 'M':
- return 1000;
- }
- return 0;
- };
- int romanToInt(string s)
- {
- for (int i = 0; i < s.size(); i++)
- {
- int r = sumchar(s[i]);
- if (t.empty())
- t.push_back(r);
- else
- {
- if (t.back() < r)
- {
- int sum = 0;
- while ((!t.empty()) && (t.back() < r))
- {
- sum += t.back();
- t.pop_back();
- }
- t.push_back(r - sum);
- }
- else
- {
- t.push_back(r);
- }
- }
- }
- return std::accumulate(t.begin(), t.end(), 0);
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement