package main
import (
"fmt"
)
var romanMap = map[rune]int{
'I': 1,
'V': 5,
'X': 10,
'L': 50,
'C': 100,
'D': 500,
'M': 1000,
}
func RomanToInt(s string) int {
total := 0
prevValue := 0
// iterate backwards over the string
for i := len(s) - 1; i >= 0; i-- {
currentValue := romanMap[rune(s[i])]
if currentValue < prevValue {
total -= currentValue
} else {
total += currentValue
}
prevValue = currentValue
}
return total
}
func main() {
roman := "XCVII"
result := RomanToInt(roman)
fmt.Printf("The integer value of %s is %d\n", roman, result)
}
/*
XCVII =
XC+V+I+I =
90+5+1+1 =
97
*/
/*
run:
The integer value of XCVII is 97
*/