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
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.
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.