समस्या
एक वैध रोमन अंक को उसके मान में बदलें। प्रतीक हैं I=1, V=5, X=10, L=50, C=100, D=500, M=1000; यदि कोई छोटा प्रतीक किसी बड़े प्रतीक से पहले आता है तो उसे घटाया जाता है (IV = 4, CM = 900)।
roman_to_int(text) को लागू करें।
इनपुट
text: एक वैध रोमन अंक।
आउटपुट
उसका मान लौटाएँ।
सीमाएँ
1 ≤ मान ≤ 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
अधिकतर symbols अपनी value जोड़ते हैं, लेकिन कुछ pairs में छोटा symbol बड़े से पहले हो तो subtraction होती है.
संकेत 2
Numeral को left to right process करें और हर symbol की अगला symbol से तुलना करें.
संकेत 3
Last symbol को सही से handle करना न भूलें, क्योंकि उसके बाद कोई follower नहीं होता.
अपेक्षित जटिलता
समय O(n), अतिरिक्त स्थान O(1)
संदर्भ
यह चुनौती CodeUtility के लिए अनुकूलित की गई है। ऊपर दिए गए स्टेटमेंट और सीमाओं का पालन करें।