golang刷leetcode--13. 罗马数字转整数

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

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值