leetcode_13

淳属虚构 · · 531 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

Golang:

思路:

首先,用一个map来存储字母和对应的数值,然后依次读取字符串里的字符,然后去map里寻值。根据规则,我们在对s的第i位取值时需要考虑第i+1位的情况

func romanToInt(s string) int{
    res:=0
    r2i:= map[byte]int{'I': 1, 'V': 5,'X':10,'L':50,'C':100,'D':500,'M':1000}
    for i:=0; i<len(s);i++ {
        if i!=len(s)-1{
            if r2i[s[i]]<r2i[s[i+1]]{
                res-=r2i[s[i]]
            }else{
                res+=r2i[s[i]]
            }
        }else{
            res+=r2i[s[i]]
        }
    }
    return res
}

PS:这里也可以对字符串从后往前读取,使用一个temp来记录当前出现过的最大字符单位值,接下来,每遇见比temp小的就减去,跟它相等或比它大的则加上,并且更新temp


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:淳属虚构

查看原文:leetcode_13

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

531 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传