LeetCode 鍵值對映(字首樹)

2021-09-19 09:11:56 字數 1399 閱讀 9018

實現乙個 mapsum 類裡的兩個方法,insert 和 sum。

對於方法 insert,你將得到一對(字串,整數)的鍵值對。字串表示鍵,整數表示值。如果鍵已經存在,那麼原來的鍵值對將被替代成新的鍵值對。

對於方法 sum,你將得到乙個表示字首的字串,你需要返回所有以該字首開頭的鍵的值的總和。

示例 1:

輸入: sum("ap"), 輸出: 3

輸入: sum("ap"), 輸出: 5

思路分析:都說的這麼明明白白的「字首」,對於這種單詞搜尋的題,一般都是使用字首樹資料結構來輔助求解。

關於字首樹的資料結構以及應用,請翻閱 leetcode 字首樹及其運用

//字首樹的程式表示

class

trienode

~trienode()

};class

mapsum

ptr = ptr-

>children[ch -

'a'];}

ptr-

>iskey =

true

;//標記為key

ptr-

>val = val;

//val域賦值

}//統計ptr為起始的節點樹中的所有的key對應的val之和

intsumval

(trienode *ptr)

if(ptr-

>iskey)

//然後統計ptr的所有子節點

for(

int i =

0; i <26;

++i)

}return tempsum;

}public

:/** initialize your data structure here. */

mapsum()

void

insert

(string key,

int val)

intsum

(string prefix)

else

}//現在ptr在prefix尾端字元所在的節點,我們只要統計其中所有key對應的val總和即可

LeetCode 677 鍵值對映

實現乙個 mapsum 類裡的兩個方法,insert和sum。對於方法insert,你將得到一對 字串,整數 的鍵值對。字串表示鍵,整數表示值。如果鍵已經存在,那麼原來的鍵值對將被替代成新的鍵值對。對於方法sum,你將得到乙個表示字首的字串,你需要返回所有以該字首開頭的鍵的值的總和。示例 1 輸入 ...

LeetCode 677 鍵值對映

1 題目描述 leetcode 2 解題思路 典型的字典樹題目,使用其可以快速的匹配字首操作。每個節點帶乙個值,如果是單詞路徑上的節點,權值直接賦值為0即可。class trie trienode root public trie void insert string s,int val p p c...

677 鍵值對映

題目描述 實現乙個 mapsum 類,支援兩個方法,insert 和 sum mapsum 初始化 mapsum 物件 void insert string key,int val 插入 key val 鍵值對,字串表示鍵 key 整數表示值 val 如果鍵 key 已經存在,那麼原來的鍵值對將被替...