Leetcodeの解説をしてほしいです
解決したいこと
Leetcodeのこちらの問題に関してです
発生している問題・エラー
この問題を考えていくにあたって、以下のコードを記述しました。
# @param {String} s
# @return {Integer}
def roman_to_int(s)
roma_num_hash = {
'I' => 1,
'V' => 5,
'X' => 10,
'L' => 50,
'C' => 100,
'D' => 500,
'M' => 1000
}
roma_num_subtraction = {
'IV' => 4,
'IX' => 9,
'XL' => 40,
'XC' => 90,
'CD' => 400,
'CM' => 900
}
i = 0
result = 0
while i < s.length
val = if(rns_arr = roma_num_subtraction[s[i..(i+1)]])
rns_arr
i += 1
else
roma_num_hash[s[i]]
end
result += val
i += 1
end
result
end
すると、s = "MCMXCIV"
としたときに、答えが1012
になってしまいます。
なぜ、これだと正解にならないのかが分からないです。
おそらく、
val = if(rns_arr = roma_num_subtraction[s[i..(i+1)]])
rns_arr
i += 1
else
ここに問題があるとは思うのですが、解決策が分からないです。
分かる方がいらっしゃいましたらご教示いただけると幸いです
0