|
275 | 275 | },
|
276 | 276 | {
|
277 | 277 | "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, |
279 | 288 | "metadata": {},
|
280 | 289 | "outputs": [],
|
281 | 290 | "source": [
|
|
305 | 314 | },
|
306 | 315 | {
|
307 | 316 | "cell_type": "code",
|
308 |
| - "execution_count": null, |
| 317 | + "execution_count": 4, |
309 | 318 | "metadata": {},
|
310 | 319 | "outputs": [],
|
311 | 320 | "source": [
|
|
322 | 331 | "cell_type": "markdown",
|
323 | 332 | "metadata": {},
|
324 | 333 | "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)" |
326 | 405 | ]
|
327 | 406 | },
|
328 | 407 | {
|
|
793 | 872 | "name": "python3"
|
794 | 873 | },
|
795 | 874 | "language_info": {
|
| 875 | + "codemirror_mode": { |
| 876 | + "name": "ipython", |
| 877 | + "version": 3 |
| 878 | + }, |
| 879 | + "file_extension": ".py", |
| 880 | + "mimetype": "text/x-python", |
796 | 881 | "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" |
798 | 885 | },
|
799 | 886 | "orig_nbformat": 4,
|
800 | 887 | "vscode": {
|
|
0 commit comments