1 00:00:00,000 --> 00:00:00,530 2 00:00:00,530 --> 00:00:03,070 >> SPEAKER 1: Ejjew nagħtu din is-soluzzjoni jipprova. 3 00:00:03,070 --> 00:00:07,130 Mela ejja tagħti ħarsa lejn dak tagħna Node Struct se look like. 4 00:00:07,130 --> 00:00:11,040 Hawnhekk, naraw aħna qed tmur biex ikollhom Bool Word u stilla node Istituzzjonjijiet 5 00:00:11,040 --> 00:00:12,990 Tfal parentesi alfabett. 6 00:00:12,990 --> 00:00:18,720 Allura l-ewwel ħaġa li inti jista 'jkun mintix, għaliex huwa hash alfabett definita bħala 27? 7 00:00:18,720 --> 00:00:22,540 Ukoll, ftakar li aħna qed tmur għall-ħtieġa li għandu jittratta l-apostrophe, hekk 8 00:00:22,540 --> 00:00:25,610 li għaddej biex tkun kemmxejn ta 'speċjali każ matul dan il-programm. 9 00:00:25,610 --> 00:00:28,780 >> OK, issa, ftakar kif Trie attwalment xogħlijiet. 10 00:00:28,780 --> 00:00:33,420 Ejja ngħidu aħna qed indiċjar-qtates kelma, imbagħad mill-għeruq ta 'Trie tagħna, 11 00:00:33,420 --> 00:00:36,670 aħna qed tmur biex tħares lejn l-Tfal array, u aħna qed tmur biex tħares lejn il- 12 00:00:36,670 --> 00:00:42,250 indiċi li tikkorrispondi għall-ittra C. Allura li jkun indiċi tnejn. 13 00:00:42,250 --> 00:00:46,400 Allura peress li, li se tagħtina node ġdid, u mbagħad aħna ser 14 00:00:46,400 --> 00:00:47,880 xogħol minn dak node. 15 00:00:47,880 --> 00:00:51,830 >> Allura peress li node, aħna qed darb'oħra ser tħares lejn il-firxa Tfal, 16 00:00:51,830 --> 00:00:56,170 u aħna qed tmur biex tħares lejn indiċi żero li jikkorrispondu għall-A fil-qtates. 17 00:00:56,170 --> 00:01:01,240 Mela allura aħna qed tmur biex tmur f'dak node, u minħabba li node, aħna qed tmur 18 00:01:01,240 --> 00:01:05,170 li tħares lejn l-indiċi li jikkorrispondi li T. U jimxu fuq dak node, 19 00:01:05,170 --> 00:01:09,590 fl-aħħarnett, aħna għandna kompletament ħarsu permezz Cat kelma tagħna, u issa bool 20 00:01:09,590 --> 00:01:15,020 Word suppost jindikaw jekk din il-kelma mogħtija hija attwalment kelma. 21 00:01:15,020 --> 00:01:17,530 >> Allura għaliex għandna bżonn li każ speċjali? 22 00:01:17,530 --> 00:01:21,680 Ukoll, dak li jekk il-katastrofi kelma huwa dizzjunarju tagħna, iżda 23 00:01:21,680 --> 00:01:24,120 il-qattus kelma mhix? 24 00:01:24,120 --> 00:01:29,030 Allura meta tħares 'tara jekk l-qattus kelma hija dizzjunarju tagħna, aħna qed tmur biex 25 00:01:29,030 --> 00:01:34,880 tħares b'suċċess permezz tal-indiċi C-A-T u jilħqu node, iżda li 26 00:01:34,880 --> 00:01:39,760 biss minħabba katastrofi ġara joħolqu lymph fuq il-mod mill-C-A-T kollu 27 00:01:39,760 --> 00:01:41,250 il-mod sa l-aħħar tal-kelma. 28 00:01:41,250 --> 00:01:46,520 Allura bool Word tintuża jindikaw jekk dan il-post partikolari fil-fatt 29 00:01:46,520 --> 00:01:48,370 jindika kelma. 30 00:01:48,370 --> 00:01:52,920 >> Kull dritt, hekk issa li nafu x'inhi Trie se look like, ejja nħarsu 31 00:01:52,920 --> 00:01:54,800 fil-funzjoni tat-Tagħbija. 32 00:01:54,800 --> 00:01:58,670 Allura Tagħbija se jirritornaw bool għal kemm aħna b'suċċess jew 33 00:01:58,670 --> 00:02:03,020 dizzjunarju mingħajr suċċess mgħobbija u dan se jkun l-dizzjunarju 34 00:02:03,020 --> 00:02:04,520 li rridu tagħbija. 35 00:02:04,520 --> 00:02:08,310 Allura l-ewwel ħaġa li aħna qed tmur biex tagħmel hu miftuħ up li dizzjunarju għall-qari. 36 00:02:08,310 --> 00:02:12,060 Irridu niżguraw li ma jonqsu, hekk jekk il-dizzjunarju ma kienx 37 00:02:12,060 --> 00:02:15,280 miftuħa b'suċċess, din se terġa 'lura Le, f'liema każ aħna qed tmur biex 38 00:02:15,280 --> 00:02:16,340 ritorn foloz. 39 00:02:16,340 --> 00:02:21,290 Iżda jekk wieħed jassumi li dan b'suċċess miftuħa, allura nistgħu fil-fatt taqra 40 00:02:21,290 --> 00:02:22,310 permezz tal-dizzjunarju. 41 00:02:22,310 --> 00:02:24,940 >> Allura l-ewwel ħaġa li aħna qed tmur biex trid tagħmel hu li għandna dan 42 00:02:24,940 --> 00:02:26,560 root varjabbli globali. 43 00:02:26,560 --> 00:02:30,250 Issa, għeruq se tkun stilla node. 44 00:02:30,250 --> 00:02:33,830 Hu l-quċċata ta 'Trie tagħna li aħna qed ser jiġu mtennija permezz. 45 00:02:33,830 --> 00:02:38,200 Allura l-ewwel ħaġa li aħna qed tmur jridu tagħmel huwa talloka memorja għall-għeruq tagħna. 46 00:02:38,200 --> 00:02:42,040 >> Avviż li aħna qed tuża l-Calloc funzjoni, li huwa bażikament l-istess 47 00:02:42,040 --> 00:02:45,560 bħala l-funzjoni malloc, ħlief huwa garantit li jirritornaw xi ħaġa li hija 48 00:02:45,560 --> 00:02:47,240 kompletament zeroed out. 49 00:02:47,240 --> 00:02:51,350 Allura jekk aħna użati malloc, għandna bżonn biex jmorru kollha permezz ta 'l-pointers fil tagħna 50 00:02:51,350 --> 00:02:54,220 node u kun żgur li dawn qed kollha null. 51 00:02:54,220 --> 00:02:56,780 Allura Calloc se tagħmel dan għalina. 52 00:02:56,780 --> 00:03:00,390 >> Issa, bħad malloc, hemm bżonn li nagħmlu żgur li l-allokazzjoni fil-fatt 53 00:03:00,390 --> 00:03:01,580 suċċess. 54 00:03:01,580 --> 00:03:04,060 Jekk dan lura null, allura aħna bżonn li tagħlaq dizzjunarju tagħna 55 00:03:04,060 --> 00:03:06,170 fajl u r-ritorn foloz. 56 00:03:06,170 --> 00:03:11,040 Allura jekk wieħed jassumi l-allokazzjoni kienet suċċess, aħna qed tmur biex tuża node 57 00:03:11,040 --> 00:03:14,340 istilla Cursor li jtenni permezz Trie tagħna. 58 00:03:14,340 --> 00:03:17,950 Allura għeruq tagħna qatt se jibdlu, imma aħna qed tmur għall-użu Cursor biex 59 00:03:17,950 --> 00:03:20,770 fil-fatt imorru minn node biex node. 60 00:03:20,770 --> 00:03:25,000 >> Kull dritt, hekk f'dan Għal loop, aħna qari permezz-fajl dizzjunarju, 61 00:03:25,000 --> 00:03:26,965 u aħna qed jużaw fil fgetc. 62 00:03:26,965 --> 00:03:30,360 Allura fgetc se grab wieħed karattru mill-fajl. 63 00:03:30,360 --> 00:03:33,430 Aħna ser tkompli ħtif karattri filwaqt li aħna ma jilħqu l- 64 00:03:33,430 --> 00:03:37,540 tmiem tal-fajl, u għalhekk hemm żewġ każijiet għandna bżonn biex jimmaniġġaw. 65 00:03:37,540 --> 00:03:41,640 L-ewwel, jekk il-karattru ma kienx linja l-ġdida, hekk nafu jekk kienx ġdida 66 00:03:41,640 --> 00:03:44,480 linja, allura aħna qed waslu biex jimxu fuq kelma ġdida. 67 00:03:44,480 --> 00:03:49,300 Iżda jekk wieħed jassumi li ma kienx linja ġdida, allura hawn, irridu insemmu l- 68 00:03:49,300 --> 00:03:52,440 indiċi aħna qed tmur għall-indiċi fi fil-firxa Tfal li 69 00:03:52,440 --> 00:03:53,890 ħarisna lejn qabel. 70 00:03:53,890 --> 00:03:57,950 >> So bħal I intqal qabel, għandna bżonn li każ speċjali tal-apostrophe. 71 00:03:57,950 --> 00:04:01,040 Avviż aħna qed jużaw l-operatur ternarji hawn, hekk aħna qed tmur biex taqra 72 00:04:01,040 --> 00:04:05,500 dan daqslikieku l-karattru naqraw fil kienet apostrophe, allura aħna qed tmur biex 73 00:04:05,500 --> 00:04:11,740 stabbiliti indiċi ugwali għal minus alfabett 1, li se tkun l-indiċi 26. 74 00:04:11,740 --> 00:04:15,190 Else, jekk ma kienx apostrophe, allura aħna qed tmur biex jistabbilixxu l-indiċi 75 00:04:15,190 --> 00:04:17,820 daqs c nieqes. 76 00:04:17,820 --> 00:04:23,090 Mela ftakar lura minn settijiet p preċedenti, c nieqes se tagħtina l- 77 00:04:23,090 --> 00:04:27,470 pożizzjoni alfabetika tal c, hekk jekk c hija l-ittra A, dan se 78 00:04:27,470 --> 00:04:28,770 agħtina indiċi żero. 79 00:04:28,770 --> 00:04:32,180 Għall-ittra B, dan jagħti lilna l-indiċi 1, u l-bqija. 80 00:04:32,180 --> 00:04:37,070 >> Allura dan jagħtina l-indiċi fil- Tfal array li rridu. 81 00:04:37,070 --> 00:04:42,540 Issa, jekk dan l-indiċi bħalissa null l-array Tfal, dan ifisser li 82 00:04:42,540 --> 00:04:47,470 a node ma jeżistix bħalissa minn f'din it-triq, għalhekk għandna bżonn li jallokaw 83 00:04:47,470 --> 00:04:49,220 node għal dik it-triq. 84 00:04:49,220 --> 00:04:50,610 Dak hu li aħna nagħmlu hawnhekk. 85 00:04:50,610 --> 00:04:54,650 Allura aħna qed tmur biex, għal darb'oħra, uża l-Calloc funzjoni hekk li aħna ma jkollhomx 86 00:04:54,650 --> 00:05:00,130 għal żero out kollha tal-pointers, u aħna, għal darb'oħra, bżonn li jiċċekkja li Calloc 87 00:05:00,130 --> 00:05:01,300 ma naqasx. 88 00:05:01,300 --> 00:05:04,760 Jekk Calloc ma jonqsu, allura għandna bżonn li jħottu kollox, qrib tagħna 89 00:05:04,760 --> 00:05:06,880 dizzjunarju, u r-ritorn foloz. 90 00:05:06,880 --> 00:05:14,110 >> Allura jekk wieħed jassumi li ma ifallu, din se toħloq tifel ġdida għalina, 91 00:05:14,110 --> 00:05:16,000 u allura aħna se jmorru għal dak tat-tfal. 92 00:05:16,000 --> 00:05:19,030 Cursor tagħna se jtenni stabbiliti għal dak it-tifel. 93 00:05:19,030 --> 00:05:23,390 Issa, jekk dan ma kienx null biex jibdew, allura l-cursor tista 'biss ittenni 94 00:05:23,390 --> 00:05:26,650 stabbiliti għal dak it-tifel mingħajr ma attwalment jkollu jalloka xejn. 95 00:05:26,650 --> 00:05:30,790 Dan huwa l-każ fejn aħna l-ewwel li ġara li talloka l-qattus kelma, u 96 00:05:30,790 --> 00:05:34,390 dan ifisser li meta immorru biex jallokaw katastrofi, aħna ma bżonn li jinħoloq 97 00:05:34,390 --> 00:05:35,720 nodes għal C-A-T mill-ġdid. 98 00:05:35,720 --> 00:05:37,620 Huma diġà jeżistu. 99 00:05:37,620 --> 00:05:40,140 >> OK, sabiex dak li huwa dan Else? 100 00:05:40,140 --> 00:05:44,600 Din hija l-kundizzjoni fejn c kienet backslash n, fejn c kienet linja ġdida. 101 00:05:44,600 --> 00:05:47,780 Dan ifisser li aħna rnexxielna temm kelma. 102 00:05:47,780 --> 00:05:51,020 Issa, dak li rridu nagħmlu meta aħna temmew kelma? 103 00:05:51,020 --> 00:05:55,250 Aħna ser jużaw dan il-qasam kelma ġewwa tal node Istituzzjonjijiet tagħna. 104 00:05:55,250 --> 00:06:00,570 >> Aħna rridu li jistabbilixxu li biex Veru, b'tali mod li jindika li dan node jindika 105 00:06:00,570 --> 00:06:03,320 kelma suċċess kelma attwali. 106 00:06:03,320 --> 00:06:05,050 Issa, tistabbilixxi li biex True. 107 00:06:05,050 --> 00:06:09,210 Irridu reset cursor tagħna għall-punt għall-bidu tal-Trie darb'oħra. 108 00:06:09,210 --> 00:06:13,510 U fl-aħħarnett, inkrement dizzjunarju tagħna daqs peress li sibna kelma oħra. 109 00:06:13,510 --> 00:06:16,450 >> Kull dritt, hekk aħna qed tmur biex iżommu tagħmel li, qari fil-karattru minn 110 00:06:16,450 --> 00:06:21,960 karattru, kostruzzjoni lymph ġodda Trie tagħna u għal kull kelma fil- 111 00:06:21,960 --> 00:06:26,810 dizzjunarju, sakemm aħna finalment tilħaq c ugwali EOF, f'liema każ, aħna break 112 00:06:26,810 --> 00:06:28,100 barra mill-fajl. 113 00:06:28,100 --> 00:06:31,110 Issa, hemm żewġ każijiet taħt li aħna jista 'jkollha hit EOF. 114 00:06:31,110 --> 00:06:35,680 L-ewwel huwa jekk kien hemm żball qari mill-fajl, hekk jekk kienx hemm 115 00:06:35,680 --> 00:06:39,280 żball, rridu nagħmlu l-tipiċi jħottu kollox, jagħlaq il-fajl, 116 00:06:39,280 --> 00:06:40,520 ritorn foloz. 117 00:06:40,520 --> 00:06:43,870 Jekk wieħed jassumi li ma kien hemm żball, dak ifisser biss għandna attwalment laqat il-aħħar ta ' 118 00:06:43,870 --> 00:06:47,820 il-fajl, f'liema każ, aħna qrib il- proċess u li terġa Veru peress li aħna 119 00:06:47,820 --> 00:06:51,010 mgħobbija b'suċċess-dizzjunarju fis Trie tagħna. 120 00:06:51,010 --> 00:06:54,240 >> Dritt, hekk issa ejja kollha check out Iċċekkja. 121 00:06:54,240 --> 00:06:58,780 Ħarsa lejn il-funzjoni Check, naraw Dak il-kontroll se jirritornaw bool. 122 00:06:58,780 --> 00:07:03,740 Dan jirritorna Veru jekk din il-kelma li huwa jiġu mgħoddija huwa Trie tagħna. 123 00:07:03,740 --> 00:07:06,170 Dan jirritorna False mod ieħor. 124 00:07:06,170 --> 00:07:10,110 >> Allura kif huma aħna se tiddetermina jekk din il-kelma hija fil Trie tagħna? 125 00:07:10,110 --> 00:07:14,270 Naraw hawnhekk li, bħal qabel, aħna qed tmur biex jużaw cursor biex jtenni 126 00:07:14,270 --> 00:07:16,010 permezz Trie tagħna. 127 00:07:16,010 --> 00:07:20,650 Issa, hawnhekk, aħna qed tmur biex jtenni fuq kelma tagħna kollu. 128 00:07:20,650 --> 00:07:24,680 Allura mtennija fuq il-kelma aħna għaddiet, aħna qed tmur biex tiddetermina l- 129 00:07:24,680 --> 00:07:29,280 indiċi fil-firxa Tfal li jikkorrispondi għall-kelma bracket i. 130 00:07:29,280 --> 00:07:34,150 Allura dan se tfittex eżattament bħal Tagħbija, fejn jekk i bracket kelma hija 131 00:07:34,150 --> 00:07:38,110 apostrophe, allura irridu li jużaw indiċi alfabett minus 1 għaliex aħna determinati 132 00:07:38,110 --> 00:07:41,160 li huwa fejn aħna qed tmur biex jaħżnu apostrophes. 133 00:07:41,160 --> 00:07:44,440 >> Else aħna qed tmur għall-użu tolower bracket kelma i. 134 00:07:44,440 --> 00:07:48,270 Mela ftakar din il-kelma tista 'jkollha arbitrarja kapitalizzazzjoni, u hekk aħna 135 00:07:48,270 --> 00:07:51,590 jixtiequ jagħmlu ċert li aħna qed jużaw verżjoni zghar ta 'affarijiet. 136 00:07:51,590 --> 00:07:55,300 U mbagħad naqqas minn dak zghar a li, għal darb'oħra, tagħtina l- 137 00:07:55,300 --> 00:07:57,940 pożizzjoni alfabetika ta 'dan il-karattru. 138 00:07:57,940 --> 00:08:01,740 Allura li għaddej biex tkun indiċi tagħna fil-firxa Tfal. 139 00:08:01,740 --> 00:08:06,480 >> U issa, jekk f'dak l-indiċi fil-Tfal array huwa null, dan ifisser li aħna 140 00:08:06,480 --> 00:08:09,050 m'għadhomx jistgħu jkomplu jiġu mtennija down Trie tagħna. 141 00:08:09,050 --> 00:08:13,320 Jekk dan huwa l-każ, din il-kelma ma tistax possibilment tkun Trie tagħna, peress li jekk dan 142 00:08:13,320 --> 00:08:18,000 kienu, dan ikun ifisser se jkun hemm triq sa din il-kelma, u inti 143 00:08:18,000 --> 00:08:19,350 qatt jiltaqgħu null. 144 00:08:19,350 --> 00:08:21,910 Allura jiltaqgħu null, nerġgħu lura Foloz. 145 00:08:21,910 --> 00:08:23,810 Il-kelma mhijiex fid-dizzjunarju. 146 00:08:23,810 --> 00:08:28,200 Jekk ma jkunx null, allura aħna qed tmur biex tkompli mtennija, hekk aħna qed tmur 147 00:08:28,200 --> 00:08:33,150 biex taġġorna cursor tagħna għall-punt għal dak partikolari node f'dak l-indiċi. 148 00:08:33,150 --> 00:08:36,659 >> Allura aħna iżommu tagħmel li matul il-kelma kollu. 149 00:08:36,659 --> 00:08:40,630 Jekk wieħed jassumi aħna qatt hit null, li l-mezzi konna kapaċi tikseb permezz tal-kollu 150 00:08:40,630 --> 00:08:44,840 dinja u ssib node fil Trie tagħna, iżda aħna mhux qed pjuttost isir s'issa. 151 00:08:44,840 --> 00:08:46,350 Aħna ma jridux biss jirritornaw True. 152 00:08:46,350 --> 00:08:51,400 Aħna rridu li jirritornaw cursor kelma żball peress li, ftakar darb'oħra, jekk qattus mhuwiex 153 00:08:51,400 --> 00:08:55,140 dizzjunarju tagħna u katastrofi huwa, allura aħna se jiksbu b'suċċess permezz 154 00:08:55,140 --> 00:08:59,810 il-qattus kelma, imma kelma cursor se jkunu foloz u mhux Veru. 155 00:08:59,810 --> 00:09:04,990 Allura aħna ritorn kelma cursor biex jindikaw jekk dan node huwa attwalment kelma, 156 00:09:04,990 --> 00:09:06,530 u li hu għal kontroll. 157 00:09:06,530 --> 00:09:08,310 >> Mela ejja check out Daqs. 158 00:09:08,310 --> 00:09:11,410 Allura Daqs se tkun pjuttost faċli peress li, ftakar fil Tagħbija, aħna qed 159 00:09:11,410 --> 00:09:15,480 inkrementazzjoni daqs dizzjunarju għal kull kelma li aħna jiltaqgħu. 160 00:09:15,480 --> 00:09:20,820 Allura Daqs huwa biss se jirritorna daqs dizzjunarju, u thats it. 161 00:09:20,820 --> 00:09:24,650 >> Kull dritt, hekk fl-aħħar, għandna jħottu. 162 00:09:24,650 --> 00:09:29,050 Allura jħottu, aħna qed tmur biex tuża funzjoni jirrikorri għall-fatt jagħmlu kollha 163 00:09:29,050 --> 00:09:33,390 tax-xogħol għalina, sabiex funzjoni tagħna se jiġu msejħa Unloader. 164 00:09:33,390 --> 00:09:35,830 X'inhu Unloader se jagħmlu? 165 00:09:35,830 --> 00:09:40,640 Naraw hawnhekk li Unloader se jtenni fuq kollha tat-tfal fil- 166 00:09:40,640 --> 00:09:45,810 dan node partikolari, u jekk il-wild node ma huwiex null, allura aħna qed tmur biex 167 00:09:45,810 --> 00:09:47,760 jħottu l-node tfal. 168 00:09:47,760 --> 00:09:52,070 >> Allura dan se recursively jħottu kollha tat-tfal tagħna. 169 00:09:52,070 --> 00:09:55,140 Ladarba aħna qed żgur li kollha tat-tfal tagħna ikunu mniżżla, allura aħna 170 00:09:55,140 --> 00:09:58,830 jistgħu ħielsa lilna nfusna, hekk jħottu ourself. 171 00:09:58,830 --> 00:10:04,550 Allura dan recursively se jħottu l- Trie kollu, u mbagħad darba li l- 172 00:10:04,550 --> 00:10:06,910 jsir, nistgħu biss ritorn True. 173 00:10:06,910 --> 00:10:09,770 Jħottu ma jistgħux jonqsu, aħna qed biss ħelsien affarijiet. 174 00:10:09,770 --> 00:10:12,985 Allura ladarba aħna qed isir ħelsien kollox, ritorn True. 175 00:10:12,985 --> 00:10:14,380 U thats it. 176 00:10:14,380 --> 00:10:16,792 Jisimni Rob, u dan kien [inaudible]. 177 00:10:16,792 --> 00:10:21,888