Vấn đề
Chúng tôi được yêu cầu triển khai một lớp MapSum với các phương thức insert và sum. Đối với phương thức chèn, chúng ta sẽ được cung cấp một cặp (chuỗi, số nguyên). Chuỗi đại diện cho khóa và số nguyên đại diện cho giá trị. Nếu khóa đã tồn tại, thì cặp khóa-giá trị ban đầu sẽ được ghi đè thành cặp mới.
Đối với phương thức sum, chúng ta sẽ được cung cấp một chuỗi đại diện cho tiền tố và chúng ta cần trả về tổng giá trị của tất cả các cặp có khóa bắt đầu bằng tiền tố.
Ví dụ
Sau đây là mã -
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'));
Đầu ra
undefined 3