1.Description
Given a roman numeral, convert it to an integer.
Example 1:
Input: s = "III"
Output: 3
Explanation: III = 3.
Example 2:
Input: s = "LVIII"
Output: 58
Explanation: L = 50, V= 5, III = 3.
Example 3:
Input: s = "MCMXCIV"
Output: 1994
Explanation: M = 1000, CM = 900, XC = 90 and IV = 4.
2.Solution
My algorithm
varromanToInt=function(s){const romanNumber ={I:1,V:5,X:10,L:50,C:100,D:500,M:1000};var result =0;for(var i =0; i < s.length; i++){if(romanNumber[s[i]]< romanNumber[s[i +1]]){
result = result + romanNumber[s[i +1]]- romanNumber[s[i]];
i++;}else{
result = result + romanNumber[s[i]];}}return result;};
Optimal Solution
Còn đây là thuật toán mình lượm trên mạng, rất ngắn và rất khó hiểu, đỉnh quá.
varromanToInt=function(s){const map ={'I':1,'V':5,'X':10,'L':50,'C':100,'D':500,'M':1000}let result =0;for(let i =0; i < s.length; i++){const curr = map[s[i]], next = map[s[i +1]];
result += curr < next ?- curr : curr;}return result;};
Nguồn: viblo.asia