समस्या
Programs अक्सर ऐसा JSON प्राप्त करते हैं जैसे {"apples": 3, "pears": 5}। System.Text.Json जैसी libraries इसे आपके लिए parse करती हैं, लेकिन हाथ से एक simple case parse करना दिखाता है कि format कैसे काम करता है।
Input एक flat JSON object है: {, फिर zero या more "key": value pairs, जो commas से separated होते हैं, फिर }। Keys quoted होती हैं और उनमें quotes, commas या colons नहीं होते; values integers होते हैं, संभवतः negative। Symbols के आसपास spaces आ सकते हैं।
sum_json_numbers(text) implement करें।
Input
text: JSON object।
Output
सभी values का sum return करें (empty object के लिए 0)।
सीमाएँ
2 ≤ टेक्स्ट की लंबाई ≤ 100,000
अधिकतम 10,000 जोड़ियाँ; हर मान और जोड़ 64-बिट पूर्णांक में आते हैं
उदाहरण
इनपुट:
text = "{\"apples\": 3, \"pears\": 5}"
अपेक्षित आउटपुट:
expected = 8
इनपुट:
std::string text = "{\"apples\": 3, \"pears\": 5}";
अपेक्षित आउटपुट:
long long expected = 8;
इनपुट:
string text = "{\"apples\": 3, \"pears\": 5}";
अपेक्षित आउटपुट:
long expected = 8;
व्याख्या
3 + 5 = 8.
इनपुट:
text = "{ \"debt\" : -20 , \"cash\":15 }"
अपेक्षित आउटपुट:
expected = -5
इनपुट:
std::string text = "{ \"debt\" : -20 , \"cash\":15 }";
अपेक्षित आउटपुट:
long long expected = -5;
इनपुट:
string text = "{ \"debt\" : -20 , \"cash\":15 }";
अपेक्षित आउटपुट:
long expected = -5;
व्याख्या
Symbols के आसपास spaces कोई फर्क नहीं डालते: −20 + 15 = −5.
कैसे हल करें
पहले खुद कोशिश करें, फिर एक-एक करके संकेत खोलें।
संकेत 1
ब्रेसेस हटाएँ, फिर कॉमा पर जोड़ियाँ बाँटें।
संकेत 2
हर मान कोलन के बाद का टेक्स्ट है; बदलने से पहले स्पेस हटाएँ।
संकेत 3
64-बिट पूर्णांक इस्तेमाल करें और खाली ऑब्जेक्ट के लिए 0 लौटाएँ।
अपेक्षित जटिलता
समय O(टेक्स्ट की लंबाई), अतिरिक्त स्थान O(1)
संदर्भ
यह चुनौती CodeUtility के लिए अनुकूलित की गई है। ऊपर दिए गए स्टेटमेंट और सीमाओं का पालन करें।