13. Roman to Integer
----------------------------------------------------------------------------
Mean:
给你一个字符串,代表罗马数字,将其转换为int型数字.
analyse:
略
Time complexity: O(N)
view code
/** * ----------------------------------------------------------------- * Copyright (c) 2016 crazyacking.All rights reserved. * ----------------------------------------------------------------- * Author: crazyacking * Date : 2016-02-16-12.06 */ #include <queue> #include <cstdio> #include <set> #include <string> #include <stack> #include <cmath> #include <climits> #include <map> #include <cstdlib> #include <iostream> #include <vector> #include <algorithm> #include <cstring> #include <bits/stdc++.h> using namespace std; typedef long long( LL); typedef unsigned long long( ULL); const double eps( 1e-8); class Solution { public : int romanToInt( string s) { unordered_map < char , int > T = { { 'I' , 1 }, { 'V' , 5 }, { 'X' , 10 }, { 'L' , 50 }, { 'C' , 100 }, { 'D' , 500 }, { 'M' , 1000 } }; int sum = T [s . back ()]; for ( int i = s . length() - 2; i >= 0; -- i) { if ( T [s [ i ]] < T [s [ i + 1 ]]) sum -= T [s [ i ]]; else sum += T [s [ i ]]; } return sum; } }; int main() { Solution solution; string s; while( cin >>s) { cout << solution . romanToInt(s) << endl; } return 0; }