LeetCode13 - Roman to Integer(Ruby实现)

题目链接: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(Ruby实现))