美文网首页
LeetCode13 - Roman to Integer(Ru

LeetCode13 - Roman to Integer(Ru

作者: MrFatt | 来源:发表于2017-03-03 00:19 被阅读0次

    题目链接:Roman to Integer

    题目

    Given a roman numeral, convert it to an integer.
    Input is guaranteed to be within the range from 1 to 3999.

    实现罗马数字到整数的转换,大家都懂的。。。

    求解思路

    罗马数字的基本规则如下(不全,但AC用到的就这些):

    • 罗马数字包含的符号有:I,V,X,L,C,D,M
    • 分别对应阿拉伯数字的1,5,10,50,100,500,1000
    • 大的符号在小的符号右边,值为大数减去小数。如IV=4
    • 小的符号在大的符号右边,值为两数相加。如XI=11

    AC代码

    # @param {String} s
    # @return {Integer}
    def roman_to_int(s)
        ret=0
        ref ={"I"=>1,"V"=>5,"X"=>10,"L"=>50,"C"=>100,"D"=>500,"M"=>1000}
        len = s.length
        (0..len-1).each do |i|
            if i == len-1 || ref[s[i+1]] <= ref[s[i]]
                ret += ref[s[i]]
            else
                ret -= ref[s[i]]
            end
        end
        return ret
    end
    

    相关文章

      网友评论

          本文标题:LeetCode13 - Roman to Integer(Ru

          本文链接:https://www.haomeiwen.com/subject/lqclgttx.html