罗马数字转整数

Bernie


Bernie
罗马数字转整数
思路:
1.循环遍历字符串,如果当前字符比前一个字符大,则减去前一个字符的值,否则加上前一个字符的值
typescript 解法
function romanToInt(s: string): number {
const len = s.length;
let ret = 0;
let pre = "";
for (let i = len - 1; i >= 0; i--) {
const current = s[i];
if (i < len - 1) {
pre = s[i + 1];
}
if (current === "I") {
if (pre === "V" || pre === "X") {
ret -= 1;
} else {
ret += 1;
}
} else if (current === "V") {
ret += 5;
} else if (current === "X") {
if (pre === "L" || pre === "C") {
ret -= 10;
} else {
ret += 10;
}
} else if (current === "L") {
ret += 50;
} else if (current === "C") {
if (pre === "D" || pre === "M") {
ret -= 100;
} else {
ret += 100;
}
} else if (current === "D") {
ret += 500;
} else if (current === "M") {
ret += 1000;
}
}
return ret;
}
go 解法
func romanToInt(s string) int {
lenS := len(s)
ret := 0
pre := ""
for i := lenS - 1; i >= 0; i -- {
current := string(s[i])
if i < lenS - 1 {
pre = string(s[i + 1])
}
if current == "I" {
if pre == "V" || pre == "X" {
ret -= 1
} else {
ret += 1
}
} else if current == "V" {
ret += 5
} else if current == "X" {
if pre == "L" || pre == "C" {
ret -= 10
} else {
ret += 10
}
} else if current == "L" {
ret +=50
} else if current == "C" {
if pre == "D" || pre == "M" {
ret -= 100
} else {
ret += 100
}
} else if current == "D" {
ret += 500
} else if current == "M" {
ret += 1000
}
}
return ret
}