私のコードは、テストケースの一つの正しい番号を印刷していません - 「MCMXCVI」パイソン:intにローマ数字、「C」計算にヒッチハイク
をそれは印刷する必要があります:1996年 それは現在、2106年を印刷しています
最後のelif文で 'M'要素をチェックした後、 'C'要素の検証に失敗したと思われます。しかし、私はそれを正確に入力し、それがなぜあるのか分からない。どんな助けもありがとう!
編集:まだ分かりません。私はそれが "IV"と "MCM"で失敗していることを知っています - しかし、なぜですか?私はすべてを解析しているので、絶対に何かが欠けているはずです。私はいくつかのn00bを説明する必要がありますよ!
第2編集:入手しました!私は "IV"を素早く手で追っていました。私はV(5)を追加したのと同じように考えましたが、5 - 1(4)を追加する代わりにマイナス1 AFTERWARDSでした。だから私は5で終わるだろう。このロジックは他のものでも失敗している。前に要素の値をチェックしてから追加しなければなりません。皆さんありがとう!
class Solution:
def romanToInt(self, roman):
"""
:type s: str
:rtype: int
"""
sum = 0
for element in range(0, len(roman)):
if roman[element] == 'I':
sum += 1
elif roman[element] == 'V':
sum += 5
if roman[element - 1] == 'I':
sum -= 1
elif roman[element] == 'X':
sum += 10
if roman[element - 1] == 'I':
sum -= 1
elif roman[element] == 'C':
sum += 100
if roman[element - 1] =='X':
sum -= 10
elif roman[element] == 'L':
sum += 50
if roman[element - 1] == 'X':
sum -= 10
elif roman[element] == 'D':
sum += 500
if roman[element - 1] == 'C':
sum -= 100
elif roman[element] == 'M':
sum += 1000
if roman[element - 1] == 'C':
sum -= 100
return sum
'MCM'の入力のための手でロジックを介して実行 - あなたはそれが間違っていていることがわかります。 –
'IV'でも正しい結果が得られません。 – glibdud
'class Solution'あなたはJavaの背景を持っていますか?真剣に、なぜクラスですか? – timgeb