No video

最浅显易懂的 KMP 算法讲解

  Рет қаралды 17,153

奇乐编程学院

奇乐编程学院

Күн бұрын

Пікірлер: 34
@chien5486
@chien5486 Жыл бұрын
講的好棒 謝謝你的用心 直到看到這篇才懂 影片聽起來又很像電影解說 很舒服 謝謝有你
@wjchuang2487
@wjchuang2487 18 күн бұрын
這個影片應該是華語解釋 KMP 算法最好的了! 只是動畫中最後在演示的時候, 如果把最後 C 與 B 不相同的下一步, 用 "AB" "A....B" 這樣表示可能會比較好。 當前用 "AB" "....AB" ,這和影片解釋的不太一致。 另外 next 數組的 if-block 要移到 prefix_len = next[preufx_len] 上面
@esc120
@esc120 2 жыл бұрын
第一次看到這麼好懂的 KMP 解說,太感謝了!!!😇
@limlim4251
@limlim4251 Жыл бұрын
这个时代有这个时代的中华文字发展趋势!唤醒大家是时候让世界容易学习中文,跟上国际大成员的中华简体文字发展步伐,没有必要一直复杂复杂复杂的旧体的繁体的。复杂旧体的繁体留给专家呀! 群众聪明一起跟上中华近代文字发展步伐的简体中文,加油!
@jackyyeh8763
@jackyyeh8763 Жыл бұрын
非常清楚易懂! 感謝!
@Frank-uk3tl
@Frank-uk3tl Жыл бұрын
next數組的 if-block要移到 prefix_len = next[preufx_len]上面 這樣才有機會繼續計算
@chinchiang4345
@chinchiang4345 2 жыл бұрын
太厲害了!!跪著看完!!
@CornuDev
@CornuDev Жыл бұрын
感謝分享,看懂了!!
@chanandlerbong3090
@chanandlerbong3090 Жыл бұрын
讲得很好,感谢!但是求next数组的部分似乎有问题,在else分支下应该加一个prefix_len是否大于0的判断才行吧?
@wenluo9826
@wenluo9826 11 ай бұрын
确实需要加一个大于0的判定, 否则直接死循环了
@user-gh6sz6jn9v
@user-gh6sz6jn9v 3 ай бұрын
感谢
@programfan3719
@programfan3719 2 жыл бұрын
谢谢大佬,已经懂了😄
@seayellow5834
@seayellow5834 2 жыл бұрын
我还是比较好奇这个算法的可行性是怎么证明的
@TiejunGao
@TiejunGao 2 жыл бұрын
KMP 中的 P 我见过,还聊过天
@pzzhuhui
@pzzhuhui Жыл бұрын
牛P
@xudongwz6962
@xudongwz6962 Жыл бұрын
求next数组的函数有问题,对于这个pattern:"ababcaabc" ,求解到ababcaa最后这个a的时候按照图中的算法对应的next数组值为0,但是实际应该是1才对
@wenluo9826
@wenluo9826 11 ай бұрын
刷算法题, 遇到相同的问题了,最后发现是next计算有问题🤣
@user-om4gw5jh9j
@user-om4gw5jh9j Жыл бұрын
Nice
@chunkwanchan5503
@chunkwanchan5503 11 ай бұрын
simply the best
@ilemt0923
@ilemt0923 2 жыл бұрын
這動畫是用3b1b的工具做的嗎?
@saber_archer
@saber_archer Жыл бұрын
您好,请问视频中的动画是用什么制作的,感觉比枯燥的代码有意思多了😂😂
@jasonji1152
@jasonji1152 Жыл бұрын
build_next 我觉得可能过于精简 理解起来逻辑不是很直观。 这是我的修改(JS): function buildNext(needle) { const next = [0]; for (let i = 1; i < needle.length; i++) { // j表示目前为止(不包括[i])相同前后缀的长度 let j = next[i - 1]; // 查表 跳到能继续下去的更短的前后缀 while (needle[i] != needle[j] && j > 0) j = next[j - 1]; // 判断 if (needle[i] == needle[j]) { next[i] = j + 1; j++; } else { next[i] = 0; } } return next; }
@wenluo9826
@wenluo9826 11 ай бұрын
判断相等那的j++已经没有用了
@pzzhuhui
@pzzhuhui Жыл бұрын
在计算 build_next 时候,else prefix_len = next[prefix_len - 1]; prefix_len 初始值是0,分支走到这里,不是数据非法索引么? 是 -1 啊
@pzzhuhui
@pzzhuhui Жыл бұрын
@7:53 应该要加一个判断条件, if prefix_len > 0
@chiaming859
@chiaming859 Жыл бұрын
我一開始也有這個疑問,但-1其實是索引最後一個數,基本上會跑出-1的時候你上一次prefix_len為0,所以不會出錯,蠻巧妙的。
@user-wd2en7ws2n
@user-wd2en7ws2n 2 жыл бұрын
能不能把if prefix_len==0这个地方改成:while patt[prefix_len]==patt[i] or prefix_len==0来回退prefix_len呢?
@hcjet
@hcjet Жыл бұрын
这频道不再更新可惜了
@superheroherohero
@superheroherohero 2 жыл бұрын
动画挺好
@u1s172
@u1s172 Жыл бұрын
最后一个匹配的字符难道不是0😂?
@jedywei
@jedywei 2 жыл бұрын
Finite state machine
@tianyuzhu7262
@tianyuzhu7262 2 жыл бұрын
else: i+=1是什么意思?
@KeyboardKa1Ra
@KeyboardKa1Ra 2 жыл бұрын
else: i = i + 1
KMP字符串匹配算法1
18:59
黄浩杰
Рет қаралды 34 М.
无所不能的矩阵-三维图形变换
8:01
奇乐编程学院
Рет қаралды 14 М.
Cute kitty gadgets 💛
00:24
TheSoul Music Family
Рет қаралды 15 МЛН
هذه الحلوى قد تقتلني 😱🍬
00:22
Cool Tool SHORTS Arabic
Рет қаралды 48 МЛН
Мы сделали гигантские сухарики!  #большаяеда
00:44
What will he say ? 😱 #smarthome #cleaning #homecleaning #gadgets
01:00
CMake软件构建实战
8:44
奇乐编程学院
Рет қаралды 11 М.
什么是方差、协方差和协方差矩阵
7:06
小黑黑讲AI
Рет қаралды 4,1 М.
探秘三维透视投影-齐次坐标的妙用
9:07
奇乐编程学院
Рет қаралды 3,8 М.
Docker 10分钟快速入门
11:00
奇乐编程学院
Рет қаралды 86 М.
帮你把KMP算法学个通透!(理论篇)
17:32
代码随想录
Рет қаралды 4,7 М.
【算法】最短路径查找-Dijkstra算法
5:15
从0开始数
Рет қаралды 40 М.
TCP/IP 网络通信之 Socket 编程入门
10:06
奇乐编程学院
Рет қаралды 40 М.
你应该掌握的10个现代 C++ 特性
11:40
奇乐编程学院
Рет қаралды 24 М.
KMP字符串匹配算法02
32:14
黄浩杰
Рет қаралды 18 М.
Cute kitty gadgets 💛
00:24
TheSoul Music Family
Рет қаралды 15 МЛН