package main
import "fmt"
func RomeToInt(s string) int {
rome := map[string]int{
"I": 1,
"V": 5,
"X": 10,
"L": 50,
"C": 100,
"D": 500,
"M": 1000,
}
strArr := []rune(s)
len := len(strArr)
if len == 1 {
return rome[s]
}
sum := 0
pre := rome[string(strArr[0])] //取得第一个字符对应的值
for i := 1; i < len; i++ {
next := rome[string(strArr[i])] //向后多取一位
//判断当前位和后一位的大小,根据罗马规则,如果前一位大于后一位执行加法
//如果前一位小于后一位执行减法
if pre < next {
sum -= pre
} else {
sum += pre
}
pre = next
}
sum += pre
return sum
}
func main() {
// s := "III" //3
// s := "IVIX" //13
s := "XVX" //15
fmt.Println(RomeToInt(s))
}
网友评论