37 lines
437 B
Go
37 lines
437 B
Go
package q13
|
|
|
|
func lookup(b byte) int {
|
|
switch b {
|
|
case 'I':
|
|
return 1
|
|
case 'V':
|
|
return 5
|
|
case 'X':
|
|
return 10
|
|
case 'L':
|
|
return 50
|
|
case 'C':
|
|
return 100
|
|
case 'D':
|
|
return 500
|
|
case 'M':
|
|
return 1000
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func romanToInt(s string) int {
|
|
num := 0
|
|
prev := 0
|
|
for i := range len(s) {
|
|
cur := lookup(s[i])
|
|
num += cur
|
|
if prev < cur {
|
|
num -= prev + prev
|
|
}
|
|
prev = cur
|
|
}
|
|
return num
|
|
}
|
|
|
|
var _ = romanToInt
|