Easy to understand C++ solution 59ms


  • 0
    J
    int romanToInt(string s) {
        int res = 0;
        for (string::iterator i = s.begin(); i != s.end(); ++i){
    	    if (i + 1 != s.end() && convert(*i) < convert(*(i+1)) && (*i == 'I' || *i == 'X' || *i == 'C')){
    		    res += convert(*(i+1)) - convert(*i);
    		    i++;
    	    }
    	    else res += convert(*i);
        }
        return res;
    }
    
    int convert(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;
        }
    }

Log in to reply
 

Looks like your connection to LeetCode Discuss was lost, please wait while we try to reconnect.