【LeetCode】13. Roman to Integerを解いてみた
はじめに
コーディングテスト対策としてLeetCodeの13. Roman to Integerを解いていく。
問題文を和訳
- ローマ数字は、I、V、X、L、C、D、M の7つの異なる記号で表されます。
- Symbol Value
- I 1
- V 5
- X 10
- L 50
- C 100
- D 500
- M 1000
- たとえば、2はローマ数字でIIと書き、2つの1を足すだけです。
- 12はXIIと書きますが、これは単にX+IIです。 27という数字はXXVII、つまりXX+V+IIと書かれています。
- ローマ数字は通常、左から右へ最大から最小へと書かれます。
- ただし、4の数字はIIIIではありません。その代わり、数字の4はIVと書かれています。
- 1は5の前にあるので、それを差し引いて4にします。
- 同じ原則が、IXと書かれた数字の9にも適用されます。減算が使用される6つのインスタンスがあります。
- IをV(5)とX(10)の前に置くと、4と9を作ることができます。
- XをL(50)とC(100)の前に置くと、40と90になります。
- CをD(500)とM(1000)の前に置くと、400と900になります。
- Input: s = "MCMXCIV"
- Output: 1994
- Explanation: M = 1000, CM = 900, XC = 90 and IV = 4.
回答
13_RomanToInteger.rb
def roman_to_int(s)
hash = {
'I'=> 1,
'V'=> 5,
'X'=> 10,
'L'=> 50,
'C'=> 100,
'D'=> 500,
'M'=> 1000
}
total = 0
i = 0
while i < s.length
if i + 1 < s.length && hash[s[i]] < hash[s[i+1]]
total += hash[s[i+1]] - hash[s[i]]
i += 1
else
total += hash[s[i]]
end
i += 1
end
return total
end
最後に
難易度はEasyでした。
Author And Source
この問題について(【LeetCode】13. Roman to Integerを解いてみた), 我々は、より多くの情報をここで見つけました https://qiita.com/kazuki-ayimon/items/ab7051276db978f1fa2e著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .