13. Roman to Integer--LeetCode Record

Given a roman numeral, convert it to an integer.

Input is guaranteed to be within the range from 1 to 3999.

    let record:[Character:Int] = ["M": 1000, "D": 500, "C": 100, "L": 50, "X": 10, "V": 5, "I": 1]
    func romanToInt(s: String) -> Int {
        var index = s.endIndex.predecessor()
        var result:Int = 0
        var preCh = s[index]

        result += record[preCh]!

        if s.characters.count > 1 {
            while index.predecessor() != s.startIndex {
                index = index.predecessor()
                result += middleResult(s[index], preCh)
                preCh = s[index]
            }
            result += middleResult(s[s.startIndex], preCh)
        }

        return result
    }

    func middleResult(p: Character, _ q: Character)->Int {
        if record[p]! < record[q]! {
            return record[p]! * -1
        }
        return record[p]!
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值