题目链接: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