力扣 || 13.罗马数字转整数--Golang

知识点:字符串
难度:简单

题目
在这里插入图片描述
示例
在这里插入图片描述
方法:利用字典的方法
Golang

func romanToInt(s string) int {
    //特殊罗马数字
    specialRomanStringMap := map[string]int{"IV": 4, "IX": 9, "XL": 40, "XC": 90, "CD": 400, "CM": 900}
    //正常罗马数字 
    romanStringMap := map[string]int{"I": 1, "V": 5, "X": 10, "L": 50, "C": 100, "D": 500, "M": 1000}   
    result := 0
    //对字符串循环
    for len(s) != 0 { 
        //当长度大于1的时候,才有必要去特殊罗马数字map中查找
        if len(s) > 1 { 
            //首先我们得拿出两个字符去特殊的map中查找
            chars := s[0:2] 
            //当存在的时候记录值
            if v, ok := specialRomanStringMap[chars]; ok { 
                result += v
                s = s[2:]
            } else { //不存在的时候去正常map中查找,并记录
                result += romanStringMap[string(s[0])]
                s = s[1:]
            }
        } else { //当字符串的长度小于等于1的就只能去正常的罗马数字map中查找
            result += romanStringMap[string(s[0])]
            s = s[1:]
        }
    }
    return result
}

执行
在这里插入图片描述
复杂度分析
时间复杂度:O(n)
空间复杂度:O(n)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值