Roman to Integer

Asked atHTHexaview Technologies
1Give yourself 5 minutes
2Answer out loud, not in your head
3Then compare with the answer below

The problem

Roman numerals are represented by seven different symbols:

  • I = 1
  • V = 5
  • X = 10
  • L = 50
  • C = 100
  • D = 500
  • M = 1000

Roman numerals are typically written from largest to smallest, left to right. However, in specific cases, a smaller numeral placed before a larger one indicates subtraction.

The following subtractive combinations are valid:

  • I before V (5) and X (10) → 4 and 9
  • X before L (50) and C (100) → 40 and 90
  • C before D (500) and M (1000) → 400 and 900

Given a Roman numeral, convert it to an integer.

**Input: **s = "III" **Output: **3 **Explanation: **III = 1 + 1 + 1 = 3

**Input: **s = "XLII" **Output: **42 **Explanation: **XL = 40, II = 2 → 40 + 2 = 42

**Input: **s = "DCCCXC"

  • 1 <= s.length <= 15
  • s contains only the characters ('I', 'V', 'X', 'L', 'C', 'D', 'M')
  • It is guaranteed that s is a valid Roman numeral in the range [1, 3999]

cpp

class Solution {
public:
    int romanToInt(string s) {
        // Your code goes here
    }
};

java

class Solution {
    public int romanToInt(String s) {
        // Your code goes here
    }
}

python

class Solution:
    def romanToInt(self, s: str) -> int:
        # Your code goes here

javascript

class Solution {
    romanToInt(s) {
        // Your code goes here
    }
}

csharp

public class Solution
{
    public int RomanToInt(string s)
    {
        // Your code goes here
    }
}

go

func romanToInt(s string) int {
    // Your code goes here
}
Stuck? Show a way to structure it+
  1. 01Map each Roman symbol to its value.
  2. 02Scan from right to left.
  3. 03Track the largest value seen to the right.
  4. 04Subtract a smaller symbol before a larger one.
  5. 05Otherwise add it and update the maximum.

Reference answer

Then expect these follow-ups

  • How would you convert an integer to Roman numerals?

    Tests: follow-up reasoning

  • How would you validate canonical Roman notation?

    Tests: follow-up reasoning

Free to read · better with Enzo

Practice this out loud with Enzo

Enzo runs it as a mock interview, pushes back with follow-ups, and grades you on the rubric.

Next question