Facebook Interview Question
350 Interview Reviews |
Back to all Facebook Interview Questions & Reviews
Interview questions and reviews posted anonymously by interview candidates
Interview Question for User Interface Engineer at Facebook:
Write a function in Javascript that takes Roman numerals (in String form) and convert it to decimal form. Assume the string is well-formed.
| Tags: | javascript, programming, code See more , See less 8 |
See more for this Facebook User Interface Engineer Interview
Helpful Question?
Yes |
No
Inappropriate?
Answers & Comments (2)
var table = {
I : 1,
V : 5,
X : 10,
L : 50,
C : 100,
D : 500,
M : 1000
},
value = 0,
current,
next,
i, j;
for (i = 0, j = n.length; i < j; i++) {
current = next || table[n.charAt(i)];
next = table[n.charAt(i + 1)];
value += current * (next > current ? -1 : 1);
}
return value;
}
Helpful Answer?
Yes |
No
Inappropriate?
To comment on this
question,
Sign In with Facebook or
Sign Up



1 of 1 people found this helpful
by Interview Candidate:
<html>
<head>
<script>
/*
I = 1;
V = 5;
VIII = 8
IX = 9
X = 10;
XX = 20;
XXX = 30;
XL = 40;
L = 50;
C = 100;
D = 500;
M = 1000;
4 1 14 40 42 609 1254 409 401
IV, XI, XIV, XL, XLII, DCIX, MCCLIV, CDIX; CDI
//if current letter is smaller than next letter, subtract value from next letter
//if current letter is greater/equal than next letter, then add value to next letter
//pseudo:
var romanToNum = new function(input) {
base value = first letter (V=5)
for each letter in input
see if following value is greater/equal/less than the current letter
if following value is less / equal
base value + letter value
if following value is greater (case: IX)
set following value to the base value, subtract first letter
}
*/
lookup = new Object();
lookup["I"] = 1
lookup["V"] = 5
lookup["X"] = 10
lookup["L"] = 50
lookup["C"] = 100
lookup["D"] = 500
lookup["M"] = 1000
function romanToNum(input) {
base = 0;
value = 0;
for(i=0; i<input.length; i++) {
alert("cur: " + base);
cur = lookup[input[i]];
if(i+1 < input.length) { next = lookup[input[i+1]] }
if(lookup[input[i]] < lookup[input[i+1]]) {
value = next - cur;
base -= next;
} else {
value = cur;
}
base += value;
}
return base;
}
alert("result: " + romanToNum("XLII"));
</script>
</head>
</html>