You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
39 lines
524 B
39 lines
524 B
package romantoint
|
|
|
|
import "strings"
|
|
|
|
type conversion struct {
|
|
roman string
|
|
decimal int
|
|
}
|
|
|
|
var conversions = []conversion{
|
|
{"M", 1000},
|
|
{"CM", 900},
|
|
{"D", 500},
|
|
{"CD", 400},
|
|
{"C", 100},
|
|
{"XC", 90},
|
|
{"L", 50},
|
|
{"XL", 40},
|
|
{"X", 10},
|
|
{"IX", 9},
|
|
{"V", 5},
|
|
{"IV", 4},
|
|
{"I", 1},
|
|
}
|
|
|
|
func romanToInt(s string) int {
|
|
for _, c := range conversions {
|
|
if strings.HasPrefix(s, c.roman) {
|
|
return c.decimal + romanToInt(s[len(c.roman):])
|
|
}
|
|
}
|
|
|
|
return 0
|
|
}
|
|
|
|
func RomanToInt(s string) int {
|
|
return romanToInt(s)
|
|
}
|