1.题目描述:
罗马数字转整数
难度:简单
2.解题思路:
按照题目描述中罗马字符的数字,计算出对应的罗马数字的十进制数值即可。
注意:
通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV等。
3.代码实现:
var roman =map[string]int{
"I":1,
"V":5,
"X":10,
"L":50,
"C":100,
"D":500,
"M":1000,
}
func romanToInt(s string) int {
if s==""{
return 0
}
//num:罗马数字中代表的数值
//lastint:上一个罗马数字的值
//total:结果
num,lastint,total:=0,0,0
for i:=0;i<len(s);i++{
char:=s[len(s)-(i+1):len(s)-i]
num=roman[char]
//通常情况下,罗马数字中小的数字在大的数字的右边;
//当罗马数字中大的数字在小的数字右边时,结果即大的那个减去小的数字
//所以当前这个数字的值小于前面那个数字时,减去当前这个数字的值即可。
if num<lastint{
total=total-num
}else {
total=total+num
}
lastint=num
}
return total
}