সমস্যা
একটি MapSum ক্লাস ইমপ্লিমেন্ট করতে হবে যাতে insert এবং sum মেথড থাকে। insert-এ (স্ট্রিং, ইন্টিজার) জোড়া দেওয়া হবে। স্ট্রিংটি কী (key) এবং ইন্টিজারটি মান (value)। যদি কী আগে থাকে, তবে পুরানো মান নতুন মান দিয়ে ওভাররাইড হবে। sum-এ একটি প্রিফিক্স স্ট্রিং দেওয়া হবে, এবং সেই প্রিফিক্স দিয়ে শুরু হওয়া সব কী-ভ্যালু জোড়ার মানগুলোর যোগফল রিটার্ন করতে হবে।
উদাহরণ কোড
class Node { constructor(val) { this.num = 0; this.val = val; this.children = {}; } } class MapSum { constructor(){ this.root = new Node(''); } } MapSum.prototype.insert = function (key, val) { let node = this.root; for (const char of key) { if (!node.children[char]) { node.children[char] = new Node(char); } node = node.children[char]; } node.num = val; }; MapSum.prototype.sum = function (prefix) { let sum = 0; let node = this.root; for (const char of prefix) { if (!node.children[char]) { return 0; } node = node.children[char]; } const helper = (node) => { sum += node.num; const { children } = node; Object.keys(children).forEach((key) => { helper(children[key]); }); }; helper(node); return sum; }; const m = new MapSum(); console.log(m.insert('apple', 3)); console.log(m.sum('ap'));আউটপুট
undefined 3