LeetCode 打卡 Day 34 — 罗马数字转整数

1、题目

2、题解

看到题目首先就想到了遍历每一位字符,然后使用switch-case结构分情况讨论,实现代码如下:

func romanToInt(s string) int {
    sum:=0
    roman:=[]byte(s)
    for key, value:=range roman{
        switch value{
            case 'I': 
                if key+1<len(roman)&&(roman[key+1]=='V'||roman[key+1]=='X'){
                    sum-=1
                }else{
                    sum+=1
                }
            case 'V': sum+=5
            case 'X': 
                if key+1<len(roman)&&(roman[key+1]=='L'||roman[key+1]=='C'){
                    sum-=10
                }else{
                    sum+=10
                }
            case 'L': sum+=50
            case 'C': 
                if key+1<len(roman)&&(roman[key+1]=='D'||roman[key+1]=='M'){
                    sum-=100
                }else{
                    sum+=100
                }
            case 'D': sum+=500
            case 'M': sum+=1000
            default: sum+=0
        }
        // fmt.Println(value," , ",sum)
    }
    return sum
}

提交结果如下

 感觉这个执行时间比想象的要长好多啊,所以就去看来题解,整体思路差不多,就是可以预先将各个字母及其对应的值存入字典中,比较之后进行加减即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值