Skip to content

Commit 8a18fb8

Browse files
committed
Trie medium problem
1 parent e68b901 commit 8a18fb8

File tree

1 file changed

+91
-4
lines changed

1 file changed

+91
-4
lines changed

15. Trie/03. LeetCode Medium.ipynb

Lines changed: 91 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -275,7 +275,16 @@
275275
},
276276
{
277277
"cell_type": "code",
278-
"execution_count": null,
278+
"execution_count": 2,
279+
"metadata": {},
280+
"outputs": [],
281+
"source": [
282+
"from typing import List"
283+
]
284+
},
285+
{
286+
"cell_type": "code",
287+
"execution_count": 3,
279288
"metadata": {},
280289
"outputs": [],
281290
"source": [
@@ -305,7 +314,7 @@
305314
},
306315
{
307316
"cell_type": "code",
308-
"execution_count": null,
317+
"execution_count": 4,
309318
"metadata": {},
310319
"outputs": [],
311320
"source": [
@@ -322,7 +331,77 @@
322331
"cell_type": "markdown",
323332
"metadata": {},
324333
"source": [
325-
"#### 5."
334+
"#### 5. [720]. Longest Word in Dictionary"
335+
]
336+
},
337+
{
338+
"cell_type": "code",
339+
"execution_count": 79,
340+
"metadata": {},
341+
"outputs": [],
342+
"source": [
343+
"class TrieNode(object):\n",
344+
" def __init__(self):\n",
345+
" self.children=collections.defaultdict(TrieNode)\n",
346+
" self.isEnd=False\n",
347+
" self.word =''\n",
348+
" \n",
349+
"class Trie(object):\n",
350+
" def __init__(self):\n",
351+
" self.root=TrieNode()\n",
352+
" \n",
353+
" def insert(self, word):\n",
354+
" node=self.root\n",
355+
" for c in word:\n",
356+
" node = node.children[c]\n",
357+
" node.isEnd=True\n",
358+
" node.word=word\n",
359+
" \n",
360+
" def bfs(self):\n",
361+
" q=collections.deque([self.root])\n",
362+
" res=''\n",
363+
" while q:\n",
364+
" cur=q.popleft()\n",
365+
" for n in cur.children.values():\n",
366+
" if n.isEnd:\n",
367+
" q.append(n)\n",
368+
" if len(n.word)>len(res) or n.word<res:\n",
369+
" res=n.word\n",
370+
" return res \n",
371+
" \n",
372+
"class Solution(object):\n",
373+
" def longestWord(self, words):\n",
374+
" trie = Trie()\n",
375+
" for w in words: trie.insert(w)\n",
376+
" return trie.bfs()"
377+
]
378+
},
379+
{
380+
"cell_type": "code",
381+
"execution_count": 80,
382+
"metadata": {},
383+
"outputs": [
384+
{
385+
"ename": "NameError",
386+
"evalue": "name 'collections' is not defined",
387+
"output_type": "error",
388+
"traceback": [
389+
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
390+
"\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)",
391+
"\u001b[1;32m~\\AppData\\Local\\Temp\\ipykernel_20844\\3031239408.py\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m 3\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[0mobj\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mSolution\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 5\u001b[1;33m \u001b[0mobj\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlongestWord\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mwords\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
392+
"\u001b[1;32m~\\AppData\\Local\\Temp\\ipykernel_20844\\3005253364.py\u001b[0m in \u001b[0;36mlongestWord\u001b[1;34m(self, words)\u001b[0m\n\u001b[0;32m 30\u001b[0m \u001b[1;32mclass\u001b[0m \u001b[0mSolution\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mobject\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 31\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mlongestWord\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mwords\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 32\u001b[1;33m \u001b[0mtrie\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mTrie\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 33\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mw\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mwords\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mtrie\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0minsert\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mw\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 34\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mtrie\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mbfs\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
393+
"\u001b[1;32m~\\AppData\\Local\\Temp\\ipykernel_20844\\3005253364.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 7\u001b[0m \u001b[1;32mclass\u001b[0m \u001b[0mTrie\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mobject\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 8\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0m__init__\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 9\u001b[1;33m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mroot\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mTrieNode\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 10\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 11\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0minsert\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mword\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
394+
"\u001b[1;32m~\\AppData\\Local\\Temp\\ipykernel_20844\\3005253364.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[1;32mclass\u001b[0m \u001b[0mTrieNode\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mobject\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0m__init__\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 3\u001b[1;33m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mchildren\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mcollections\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdefaultdict\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mTrieNode\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 4\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0misEnd\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mFalse\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mword\u001b[0m \u001b[1;33m=\u001b[0m\u001b[1;34m''\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
395+
"\u001b[1;31mNameError\u001b[0m: name 'collections' is not defined"
396+
]
397+
}
398+
],
399+
"source": [
400+
"words = [\"w\",\"wo\",\"wor\",\"worl\",\"world\"]\n",
401+
"#words = [\"a\",\"banana\",\"app\",\"appl\",\"ap\",\"apply\",\"apple\"]\n",
402+
"\n",
403+
"obj = Solution()\n",
404+
"obj.longestWord(words)"
326405
]
327406
},
328407
{
@@ -793,8 +872,16 @@
793872
"name": "python3"
794873
},
795874
"language_info": {
875+
"codemirror_mode": {
876+
"name": "ipython",
877+
"version": 3
878+
},
879+
"file_extension": ".py",
880+
"mimetype": "text/x-python",
796881
"name": "python",
797-
"version": "3.9.13 (main, Aug 25 2022, 23:51:50) [MSC v.1916 64 bit (AMD64)]"
882+
"nbconvert_exporter": "python",
883+
"pygments_lexer": "ipython3",
884+
"version": "3.9.13"
798885
},
799886
"orig_nbformat": 4,
800887
"vscode": {

0 commit comments

Comments
 (0)