Knuth-Morris-Pratt KMP String Matching Algorithm | Search Pattern | GFG POTD

Поділитися
Вставка
  • Опубліковано 16 лис 2024

КОМЕНТАРІ • 234

  • @wearevacationuncoverers
    @wearevacationuncoverers 10 місяців тому +91

    You deserve more subscribers. Thank you for this masterpiece.

    • @codestorywithMIK
      @codestorywithMIK  10 місяців тому +17

      Means a lot. Thank you for your kind words 🙏🙏❤️❤️

    • @akhandjeet6114
      @akhandjeet6114 Місяць тому +2

      bhai meri tarf s bhi 100 rs kr dee

  • @thekindspill
    @thekindspill 10 місяців тому +76

    A suggestion to everyone :
    1. Those who want a crash course on KMP - Abdul Bari Sir's Video is good
    2. Those who want to understand how KMP works and see multiple Dry Runs (Post-mortem of KMP) - Legend MIK is here
    Understanding KMP is easy but to understand the code on how to implement was the toughest part and this 1 hour video was worth watching. This is the only channel where I comment whole heartedly because of the quality of the content and this legend's hard work. Hats off king.

    • @shashankvashishtha4454
      @shashankvashishtha4454 6 місяців тому +3

      i dont think so i dont understand watched this vdo for 3 hours+ still struggling to understand

  • @DevOpskagyaan
    @DevOpskagyaan 10 місяців тому +35

    “Dry Run is one of the most underrated skills”
    --- MIK 🔥

  • @RajSingh-te1uo
    @RajSingh-te1uo 10 місяців тому +34

    1 hour on KMP 😲Thank you so much sir!

    • @codestorywithMIK
      @codestorywithMIK  10 місяців тому +4

      Thank you 😇🙏❤️

    • @shashankvashishtha4454
      @shashankvashishtha4454 6 місяців тому +1

      it was three hours for me (watched video parts multiple times) and still i dont understand.

    • @insidious_681
      @insidious_681 4 місяці тому

      True​@@shashankvashishtha4454

  • @DevOpskagyaan
    @DevOpskagyaan 10 місяців тому +18

    I think KMP is one of those algorithms jisko samajhna easy hai but code me implement karna very tough. Thanks for explaining code line by line 🙏🏻🙏🏻

  • @aws_handles
    @aws_handles 10 місяців тому +6

    Wo MIK hai, kuch bhi kar sakta hai 🔥🔥
    I have no words ❤️🙏🏻

  • @vanshbaghel5884
    @vanshbaghel5884 10 місяців тому +7

    Such a huge difference with your explanation vs other explanations.
    Loving the channel, thanks for everything!!

  • @salmankhader1258
    @salmankhader1258 10 місяців тому +3

    I watched so many videos on kmp but every time i forgot the Algorithm. I find this video as one stop solution. The intuition behind using lps is something which we can expect only from this channel. Thanks a lot.

  • @souravjoshi2293
    @souravjoshi2293 10 місяців тому +4

    "History will remember this legendary explanation of KMP."
    Just completed the video. I was reading comments of others in this video.
    I agree with comments that understanding the concept is easy but being able to code it and explain the intuition and code it up is difficult and you are just marvellous in breaking down a big problem into smaller chunks. And last but not the least, I want this patience level of doing dry runs like you.

  • @amannegi6130
    @amannegi6130 10 місяців тому +5

    best vedio on KMP👍

  • @djhimss4046
    @djhimss4046 48 хвилин тому +1

    Thankyou so much sir itna achha samjhane ke liye

  • @SarthakKumar
    @SarthakKumar 9 місяців тому +4

    legendary explanation of KMP, after procrastinating for many days finally saw it completely! Great work!

  • @ugcwithaddi
    @ugcwithaddi 10 місяців тому +2

    🔥🔥🙏🏻
    Kisi bhi algorithm ka intuition isi channel par mil sakta hai. Salute to your skill 🫡

  • @prernagupta7729
    @prernagupta7729 9 місяців тому +2

    Best video for KMP on youtube !!
    Why couldn't youtube just showed me this video in the beginning 😴??

    • @codestorywithMIK
      @codestorywithMIK  9 місяців тому

      Means a lot 🙏🙏

    • @rajatjaswaldev
      @rajatjaswaldev Місяць тому

      You wouldn't not understand clearly if youtube would have shown you this video first,
      it is only because you understood clearly because you had the insight of the algorithm earlier from other videos you had watched.
      For the first timer the explanation is a bit confusing between length and LPS of length.

  • @brokegod5871
    @brokegod5871 Місяць тому +1

    I solved leetcode hard 1392 Longest Happy Prefix after understanding from this video, thank you

  • @insertname6
    @insertname6 3 місяці тому +1

    Never seen such quality videos on any other channel.

  • @ManishKumar-zb2qx
    @ManishKumar-zb2qx 9 місяців тому +5

    UnderRated channel

  • @anshtanwar1813
    @anshtanwar1813 9 місяців тому +2

    Really great, worth spending an hour

  • @abhishekshimpi214
    @abhishekshimpi214 Місяць тому +2

    Completely worth it to watch 1 Hour of video😇. I got a full in-depth understanding of KMP and all its edge cases.
    Thank You So Much MIK for such amazing content 🤟✌🙏

  • @shreyanshjain1595
    @shreyanshjain1595 Місяць тому +1

    VERY WELL EXPLAINED BRO❣

  • @Ramneet04
    @Ramneet04 10 місяців тому +2

    It was the most needed video on UA-cam. Thankyou so much ❤❤

    • @codestorywithMIK
      @codestorywithMIK  10 місяців тому +1

      My pleasure 😊

    • @Ramneet04
      @Ramneet04 10 місяців тому

      @@codestorywithMIK bhaiya can we do length-- instead of length=lps[length-1]???

  • @KunalSingh-kn2ij
    @KunalSingh-kn2ij 9 місяців тому +2

    YOU ARE GREAT SIR JI!!🫡

  • @rugung1381
    @rugung1381 10 місяців тому +2

    what a great explanation bhaiya

    • @codestorywithMIK
      @codestorywithMIK  10 місяців тому +1

      ❤️🙏😇

    • @rugung1381
      @rugung1381 10 місяців тому

      aise proper explanation with step by step intuition bohut kaam milta hai@@codestorywithMIK

  • @tarunsingh2480
    @tarunsingh2480 2 місяці тому +1

    Great Explanation Sir. You nailed this algorithm❤❤❤. Never ever will forget this algorithm.

  • @sahilanand30
    @sahilanand30 9 місяців тому +2

    Nicely explained

  • @Shivanai_h
    @Shivanai_h 10 місяців тому +1

    Best explanation on KMP Algo on UA-cam.
    Thanks, MIK:)

    • @codestorywithMIK
      @codestorywithMIK  10 місяців тому

      Means a lot to me. Thank you so much 🙏😇

  • @AmanKumar-fy3ym
    @AmanKumar-fy3ym Місяць тому +1

    very good video, simple and good way of teaching.

  • @madugulajoshi5050
    @madugulajoshi5050 10 місяців тому +2

    Was waiting for this video. Finally dropped. Thank u bro

  • @Mohit_Q
    @Mohit_Q 8 місяців тому +1

    Waiting for more string algorithm

  • @ankitnainwal9714
    @ankitnainwal9714 7 місяців тому +1

    Best video on KMP Algorithm 🙌🙌

  • @arkojeetbera8584
    @arkojeetbera8584 10 місяців тому +1

    Legendary explanation 🔥

  • @vivek3247
    @vivek3247 8 місяців тому +2

    Sir please came up with all algorithm playlist in one place I am waiting

  • @S3aw0lf
    @S3aw0lf 10 місяців тому +8

    Was wondering when will u upload this cause had to go thru sm vids to understand KMP but coding it is actually hard

    • @codestorywithMIK
      @codestorywithMIK  10 місяців тому +3

      Totally agree. Understanding KMP is easy. But the toughest part is
      - Understanding WHY
      - coding it up
      I hope my video helps 🙏🙏❤️❤️

  • @gui-codes
    @gui-codes 3 місяці тому

    one of the best explanations for KMP

  • @EB-ot8uu
    @EB-ot8uu 9 місяців тому +1

    I am sure this is the only best detailed explanation on KMP which details out the implementation also line by line. I don't know who you are , but you are doing an amazing work. Hope to collaborate with you someday

  • @Pratham_jaiswal
    @Pratham_jaiswal 10 місяців тому +3

    Thanks a lot bro ❤
    I watched your video of kmp friday 12. Jan 24 and today 14 jan 24 Leetcode WC has 2 question on kmp.😂
    Done both ✅

    • @codestorywithMIK
      @codestorywithMIK  10 місяців тому

      Awesome
      So happy to see this comment ❤️❤️❤️🙏🙏🙏

  • @IshaanJoshi-ms9mb
    @IshaanJoshi-ms9mb 5 місяців тому +1

    every second invested was worth it! thanks for helping us out MIK!

  • @nobbiesid1324
    @nobbiesid1324 6 місяців тому +1

    Thanku sir
    You are my favourite teacher ❤

  • @knowsbetter4113
    @knowsbetter4113 10 місяців тому +2

    ❤ crystal clear

  • @AkshayParihar-n9o
    @AkshayParihar-n9o 9 місяців тому +2

    One significant Question came to my mind is, 22:00 While calculating LPS[2] we took an A as common, but 24:47 while deriving LPS[6] we did not took C as common even though the length was odd in both the cases.

    • @shivanandareddy7067
      @shivanandareddy7067 Місяць тому +1

      I had the same doubt. Take a look at this
      for "aaa", first two characters (aa) = last two characters
      but for "aacaa", first three characters (aac) != last three characters (caa)

  • @gauravbanerjee2898
    @gauravbanerjee2898 10 місяців тому +1

    Thanks a lot for your efforts bhaiya ❤

  • @factinsaan4333
    @factinsaan4333 10 місяців тому +7

    Mik>>striver

    • @souravjoshi2293
      @souravjoshi2293 9 місяців тому +3

      I think both are equally good.
      But Hard problems me mik sir ko beat nahi kar sakta koi explanation.

  • @monikavaid5083
    @monikavaid5083 10 місяців тому +1

    Video was extremely good. The only thing that could be added was explaining time complexity after using KMP. Thank you so very much for the best explanation on internet!!!! ☺

    • @codestorywithMIK
      @codestorywithMIK  10 місяців тому

      Thank you so much.
      Actually the Time Complexity is O(m+n).
      I will ensure I always add TC and SC after explaining.
      Thank you 🙏😇

    • @monikavaid5083
      @monikavaid5083 10 місяців тому

      Thanks a lot! 😊😊

  • @playwithlinux
    @playwithlinux 4 місяці тому +1

    Very nice explanation and intuition broh.... You nailed it. 💛

  • @JagannathDebGunin
    @JagannathDebGunin 10 місяців тому +1

    Waiting for KMP Algorithm dada...
    Thanks a lot...

  • @HimanshuVarshney-z7e
    @HimanshuVarshney-z7e 9 місяців тому

    bhaiya aapki wajah se easy question me atakne wale ne aaj hard question(3036. Number of Subarrays That Match a Pattern II) bna liya ...thanks for everything in coding bhaiya ...please continue this playlist ...

  • @xiaoshen194
    @xiaoshen194 10 місяців тому +4

    Tysm. I have always found KMP and Z algo hard. Hopefully u would cover z algo next. Thnx

  • @harchitgulati3065
    @harchitgulati3065 9 місяців тому +1

    what an explanation man !

  • @chiragsingh8323
    @chiragsingh8323 10 місяців тому +1

    Thanks a lot MIK bhai❤

  • @MohammedHasmi577
    @MohammedHasmi577 26 днів тому +1

    Sir my dream is to meet you one day u r just ❤🎉

  • @tarunpatel1457
    @tarunpatel1457 Місяць тому

    sir please upload the video of Z algorithm and rabin karp. Because no one in youtube teach like you.
    Please upload these 2 videos on priority if possible. Thank you for all the videos.

  • @ss8273
    @ss8273 10 місяців тому

    most most awaited viedo bhaiya, it would be so so great if you make video on segment trees.

  • @39_jatinjain4
    @39_jatinjain4 9 місяців тому +1

    Superb Explanation 🙂🙂

  • @apurav363
    @apurav363 Місяць тому +1

    Very helpful

  • @rohitrajput2097
    @rohitrajput2097 5 місяців тому

    Kudos to your Hard Work Man

  • @UECAbhishekKumar
    @UECAbhishekKumar 9 місяців тому +1

    Best explanation ❤

  • @Ares-go9hd
    @Ares-go9hd Місяць тому

    Please continue this series

  • @SouvikAdh
    @SouvikAdh 6 місяців тому

    Thanks for the video. I finally can understand KMP now. One observation if txt="aaa" and pat="aaaa", your implementation will fail since you didn't add length check of i & j at line no 35 else-if check. Got this test case failure while solving leetcode-28.

  • @alfansejigar3636
    @alfansejigar3636 5 місяців тому

    you are a very good tutor💓💓

  • @Lakshya-f4l
    @Lakshya-f4l 2 місяці тому +1

    Thankyou so much sir!

  • @suyashjain3223
    @suyashjain3223 9 місяців тому

    Amazing Explanation!!!🔥🔥

  • @PramodKumar-bu2uf
    @PramodKumar-bu2uf 3 місяці тому +1

    thankyou very much Sir 🙂

  • @naveroo11
    @naveroo11 9 місяців тому

    Very Good Explanation

  • @lalithsharma2259
    @lalithsharma2259 9 місяців тому +1

    Self note
    Why pattern[i]=pattern[len] while Finding LPS
    Dry run time stap 34:00-36:10

  • @prajwalshaw9217
    @prajwalshaw9217 9 місяців тому

    Hello sir. Please do make a video on z-algorithm. Your explanations are always the best. Thank u.

  • @harjotanand834
    @harjotanand834 Місяць тому +5

    One small doubt ....why we're doing lps[len-1] in LPS code ...like from dry run i got to know that its working ....but why not lps[i-1] and why lps[len-1] ?? Please help 🫡

    • @subhajitdey135
      @subhajitdey135 Місяць тому

      I guess i-- can also be done for i and i+1 the LPS can differ maximum by 1. So it doesn't matter. But then we have to initialise another variable for i. Not sure if this explanation is correct or not

    • @siddharth.chandani
      @siddharth.chandani День тому

      Bro why we cannot just simply do length=length -1; as we want to check for shorter lps ??

  • @-prachi_pandey..
    @-prachi_pandey.. 5 місяців тому +1

    Explanation ❤

  • @ChiragWadwa
    @ChiragWadwa 10 місяців тому +1

    I was waiting for this!❤

  • @abhinavnarang4369
    @abhinavnarang4369 5 місяців тому

    correction at 37:21 it will be kaash 3 length ka suffix and prefix hota, btw ove your content, top notch

  • @umeshbisht1054
    @umeshbisht1054 10 місяців тому +1

    Thanku so much bhaiya ❤

  • @CaptainCoder1
    @CaptainCoder1 9 місяців тому +1

    Good explanation mik thanks a lot❤❤❤❤❤

  • @Neha_Yadav262
    @Neha_Yadav262 10 місяців тому

    Explained very well. Can you please upload other string algorithms also.

  • @BholaSingh-m8z
    @BholaSingh-m8z 9 місяців тому

    Superb bro excellent content, no doubt this one is the best among all.

    • @codestorywithMIK
      @codestorywithMIK  9 місяців тому

      Thank you so much 🙂🙏❤️

    • @BholaSingh-m8z
      @BholaSingh-m8z 9 місяців тому

      @@codestorywithMIK Boyer Moore Algorithm please

  • @siddharth.chandani
    @siddharth.chandani День тому +2

    38:16 Why not Length = Length - 1 ? Why length is updated with value of lps[length -1] ???

    • @siddharth.chandani
      @siddharth.chandani День тому +1

      We cannot use len--, we have to do len=lps[len-1].
      The logic behind this is that let's say upto some
      index i, len is 10, that means that prefix of length 10 characters is equal to the suffix (upto i) of 10 characters,
      Now let's say at the index 9(i.e length 10) if the Ips[9] is let's say 3, that means that the prefix of the length 3 is equal to suffix of length 3 (upto index 9), which in turn would mean that those same three characters will be present in the suffix of length 10 (upto i) as the whole string of length 10 (from 0) is repeated at the end as the suffix till index i, this is the most important part of this logic (remember this)
      With all this in mind if we want to find lps[i+1] and s[i+1]!=s[len], since we know that the last three characters(ie. i,j-1,i-2) are equal to the first three characters from O and also equal to the last three characters upto index 9 (from the above point marked as remember this), so if we check at index 3(i.e length 4) and it matches with s[i+1], we can have the lps[i+1]=4. This will be achieved if we set the len to lps[len-1], i.e set the length to the length of the longest prefix suffix pair, at the index len-1, then apply the basic idea of kmp.
      Also with doing len--, with duplicates present
      we can incorrectly match s[i]=s[len] at some higher len value, where prefix might not be equal to suffix.
      Thanks to @shivamjha1238 's comment!

  • @nani17290
    @nani17290 4 місяці тому +1

    MIK! It's a right number

  • @lofireverbz-wy7go
    @lofireverbz-wy7go 9 місяців тому +2

    bhaiya please ek video rabin karp par bi bnado , usske 3-4 hard questions ek jaise hai

  • @siddharth.chandani
    @siddharth.chandani День тому +1

    38:16
    We cannot use len--, we have to do len=lps[len-1].
    The logic behind this is that let's say upto some
    index i, len is 10, that means that prefix of length 10 characters is equal to the suffix (upto i) of 10 characters,
    Now let's say at the index 9(i.e length 10) if the Ips[9] is let's say 3, that means that the prefix of the length 3 is equal to suffix of length 3 (upto index 9), which in turn would mean that those same three characters will be present in the suffix of length 10 (upto i) as the whole string of length 10 (from 0) is repeated at the end as the suffix till index i, this is the most important part of this logic (remember this)
    With all this in mind if we want to find lps[i+1] and s[i+1]!=s[len], since we know that the last three characters(ie. i,j-1,i-2) are equal to the first three characters from O and also equal to the last three characters upto index 9 (from the above point marked as remember this), so if we check at index 3(i.e length 4) and it matches with s[i+1], we can have the lps[i+1]=4. This will be achieved if we set the len to lps[len-1], i.e set the length to the length of the longest prefix suffix pair, at the index len-1, then apply the basic idea of kmp.
    Also with doing len--, with duplicates present
    we can incorrectly match s[i]=s[len] at some higher len value, where prefix might not be equal to suffix.

  • @ujwalbarodia4313
    @ujwalbarodia4313 Місяць тому

    Time complexity of brute force will be O(n^2 * m)

  • @thaman701
    @thaman701 8 місяців тому +1

    great sir

  • @jr.stark07
    @jr.stark07 3 місяці тому

    Bhaiya, rolling hashing + rabin karp algorithm k uper thi ek vdo banado ! ♥️

  • @michaelmaahi7384
    @michaelmaahi7384 10 місяців тому +1

    Great bhai

  • @vision7673
    @vision7673 2 місяці тому

    KMP DONE🎉

  • @anushkathakur6531
    @anushkathakur6531 9 місяців тому

    really loved it😍

  • @Strawcontamination
    @Strawcontamination 10 місяців тому +1

    Thank you bhaiya

  • @santoshpathak8201
    @santoshpathak8201 10 місяців тому

    Thank-You so Much Brother .

  • @phoddaal7130
    @phoddaal7130 9 місяців тому +1

    kmp itna dhakad samjhaya hai sir (as always),
    to lage haath Rabin Karp bhi Samjha dijiye 😁😁

  • @a3rdtierguy864
    @a3rdtierguy864 5 місяців тому +1

    Bhaiya please make video on rabins carp algo

  • @vinayjangra1401
    @vinayjangra1401 9 місяців тому +4

    why lps for one length is 0?
    see, we are looking for proper prefix (not just prefix), and proper prefix means the prefix can't be equal to the whole string
    so for str = "a", we can't take "a" as a proper prefix, because it's whole string
    But, for str = "aaaa", the lps will be of length = 3, because we can take "aaa_" as the proper prefix which is not whole string and take "_aaa" as the suffix.

  • @atheisth2373
    @atheisth2373 7 місяців тому

    very nice

  • @krishnaramtripathi958
    @krishnaramtripathi958 3 місяці тому

    Thank you!!

  • @wipeesports8990
    @wipeesports8990 10 місяців тому

    Hello bhaiya, please make 1 or 2 long video on recursion and backtracking please. By explaining from 0 to intermediate level. Please 🙏🏻🙏🏻

  • @Mohit_Q
    @Mohit_Q 8 місяців тому

    Thank you so much ❤

  • @bhuppidhamii
    @bhuppidhamii 9 місяців тому +1

    32:09 LPS CODE

  • @alfansejigar3636
    @alfansejigar3636 5 місяців тому +1

    can you make a video on leetcode 214. (Shortest Palindrome)

  • @namanpadiyar09
    @namanpadiyar09 4 місяці тому +1

    thanks

  • @Simar7Singh
    @Simar7Singh 10 місяців тому +1

    thanx for the video

  • @maheshkeshwala62
    @maheshkeshwala62 10 місяців тому +1

    love you bro

  • @See2002-se
    @See2002-se 2 місяці тому

    sir make video on Rabin karp algorithm

  • @tutuimam3381
    @tutuimam3381 10 місяців тому +1

    Thankyou 👍🎆

  • @Algorithmswithsubham
    @Algorithmswithsubham 10 місяців тому +2

    Sir codeforces k lya v ak playlist banaya please

    • @codestorywithMIK
      @codestorywithMIK  10 місяців тому +1

      Let me try to take out some time to explore