Сложность: medium
Реализуйте структуру данных
MapSum, поддерживающую:-
Insert(key string, val int) — вставляет или обновляет значение по ключу.-
Sum(prefix string) — возвращает сумму значений всех ключей, начинающихся с указанного префикса.Пример:
mapSum := Constructor()
mapSum.Insert("apple", 3)
mapSum.Sum("ap") // 3
mapSum.Insert("app", 2)
mapSum.Sum("ap") // 5 (3 + 2)
👨💻 Алгоритм:
1⃣Хранение данных
Используем
map[string]int для хранения всех ключей и их значений.2⃣Операция Insert
Если ключ уже существует — просто перезаписываем новое значение.
3⃣Операция Sum
Проходим по всем ключам. Если ключ начинается с
prefix, прибавляем его значение к результату.😎 Решение:
package main
import "strings"
type MapSum struct {
mapData map[string]int
}
func Constructor() MapSum {
return MapSum{mapData: make(map[string]int)}
}
func (this *MapSum) Insert(key string, val int) {
this.mapData[key] = val
}
func (this *MapSum) Sum(prefix string) int {
ans := 0
for key, val := range this.mapData {
if strings.HasPrefix(key, prefix) {
ans += val
}
}
return ans
}
Ставь 👍 и забирай 📚 Базу знаний