समस्या
Convert a valid Roman numeral to its value. Symbols are I=1, V=5, X=10, L=50, C=100, D=500, M=1000; a smaller symbol before a larger one is subtracted (IV = 4, CM = 900).
Implement roman_to_int(text).
Input
text: A valid Roman numeral.
Output
Return its value.
सीमाएँ
1 ≤ value ≤ 3,999
उदाहरण
इनपुट:
text = "XIV"
अपेक्षित आउटपुट:
expected = 14
इनपुट:
std::string text = "XIV";
अपेक्षित आउटपुट:
long long expected = 14;
इनपुट:
string text = "XIV";
अपेक्षित आउटपुट:
long expected = 14;
व्याख्या
X = 10, IV = 4: 14.
इनपुट:
text = "MCMXCIV"
अपेक्षित आउटपुट:
expected = 1994
इनपुट:
std::string text = "MCMXCIV";
अपेक्षित आउटपुट:
long long expected = 1994;
इनपुट:
string text = "MCMXCIV";
अपेक्षित आउटपुट:
long expected = 1994;
व्याख्या
M=1000, CM=900, XC=90, IV=4: 1994.
कैसे हल करें
पहले खुद कोशिश करें, फिर एक-एक करके संकेत खोलें।
संकेत 1
Most symbols add their value, but some pairs subtract when a smaller symbol appears before a larger one.
संकेत 2
Process the numeral from left to right and compare each symbol with the next one.
संकेत 3
Make sure the last symbol is always handled correctly since it has no follower.
अपेक्षित जटिलता
O(n) time, O(1) extra space
संदर्भ
यह चुनौती CodeUtility के लिए अनुकूलित की गई है। ऊपर दिए गए स्टेटमेंट और सीमाओं का पालन करें।