🌺前言
三种处理罗马数字转整数的方法
方法1
javascript
/**
* @param {string} s
* @return {number}
*/
var romanToInt = function (s) {
const spec = {
IV: 4,
IX: 9,
XL: 40,
XC: 90,
CD: 400,
CM: 900
}
const valueMap = {
I: 1,
V: 5,
X: 10,
L: 50,
C: 100,
D: 500,
M: 1000
}
const arr = s.split('')
let i = 0
let sum = 0
while (i<arr.length) {
const key1 = arr[i]
const key2 = arr[i + 1]
const key = key1 + key2
if (key1 && key2 && spec[key]) {
sum += spec[key]
i = i + 2
} else {
sum += valueMap[key1]
i++
}
}
return sum
};
方法2
javascript
/**
* @param {string} s
* @return {number}
*/
var romanToInt = function (s) {
const valueMap = {
I: 1,
V: 5,
X: 10,
L: 50,
C: 100,
D: 500,
M: 1000
}
let sum = 0
let x = 0
let y = 0
for(let i =s.length-1;i>=0;i--){
x = valueMap[s[i]]
if(y<=x){
sum+=x
}else{
sum-=x
}
y = x
}
return sum
};
方法3
javascript
/**
* @param {string} s
* @return {number}
*/
var romanToInt = function (s) {
let sum = 0
const valueMap = {
I: 1,
V: 5,
X: 10,
L: 50,
C: 100,
D: 500,
M: 1000,
a: 4,
b: 9,
c: 40,
d: 90,
e: 400,
f: 900
}
s = s.replace('IV', 'a')
s = s.replace('IX', 'b')
s = s.replace('XL', 'c')
s = s.replace('XC', 'd')
s = s.replace('CD', 'e')
s = s.replace('CM', 'f')
for(i=0;i<s.length;i++){
sum+=valueMap[s[i]]
}
return sum
};
目录
文章最后更新于 2024-08-30 16:50:42
作者:徐徐版权声明:转载请注明文章出处
留言

~~空空如也