Zurück zu den Herausforderungen
Einfach 0 gelöst 0% Erfolgsquote

Wert einer römischen Zahl

Wandle eine römische Zahl in eine Zahl um.

Das lernst du

  • Symbole mit einem Dictionary Werten zuordnen
  • Subtraktive Paare wie IV und XC behandeln
  • Einen String durchlaufen und dabei auf das nächste Zeichen schauen

Problem

Wandle eine gültige römische Zahl in ihren Wert um. Die Symbole sind I=1, V=5, X=10, L=50, C=100, D=500, M=1000; steht ein kleineres Symbol vor einem größeren, wird es subtrahiert (IV = 4, CM = 900).

Implementiere roman_to_int(text).

Eingabe

text: Eine gültige römische Zahl.

Ausgabe

Gib ihren Wert zurück.

Einschränkungen

1 ≤ Wert ≤ 3.999

Beispiele

Beispiel 1
Eingabe:
text = "XIV"

Erwartete Ausgabe:
expected = 14
Eingabe:
std::string text = "XIV";

Erwartete Ausgabe:
long long expected = 14;
Eingabe:
string text = "XIV";

Erwartete Ausgabe:
long expected = 14;

Erläuterung

X = 10, IV = 4: 14.

Beispiel 2
Eingabe:
text = "MCMXCIV"

Erwartete Ausgabe:
expected = 1994
Eingabe:
std::string text = "MCMXCIV";

Erwartete Ausgabe:
long long expected = 1994;
Eingabe:
string text = "MCMXCIV";

Erwartete Ausgabe:
long expected = 1994;

Erläuterung

M=1000, CM=900, XC=90, IV=4: 1994.

So gehst du vor

Versuch es zuerst allein und öffne dann einen Hinweis nach dem anderen.

Hinweis 1

Die meisten Symbole werden addiert, aber manche Paare werden subtrahiert, wenn ein kleineres Symbol vor einem größeren steht.

Hinweis 2

Verarbeite die Zahl von links nach rechts und vergleiche jedes Symbol mit dem nächsten.

Hinweis 3

Stelle sicher, dass das letzte Symbol immer korrekt behandelt wird, da es keinen Nachfolger hat.

Erwartete Komplexität

Zeit O(n), zusätzlicher Speicher O(1)

Referenzen

Diese Aufgabe wurde für CodeUtility angepasst. Beachte die oben genannten Vorgaben und Einschränkungen.

Von anderen lernen

Community-Lösungen

Noch keine veröffentlichten Lösungen. Löse die Aufgabe und teile als Erster eine Lösung.