Longest common substring | Dynamic programming

This video explains how to find the longest common substring as well as print the longest common substring. This is a very popular dynamic programming video which is frequently asked in programming interviews. The code for it is present below. If you find any difficulty or have any query then do COMMENT below. PLEASE help our channel by SUBSCRIBING and LIKE our video if you found it helpful...CYA :)
CODE LINK: drive.google.com/open?id=1BWU...

Пікірлер: 125

  • @gourabbanerjee4152
    @gourabbanerjee41523 жыл бұрын

    I believe I have gone through all the famous youtube channels explaining DSA. And I must say, the best explanation for each problem I find here. While I search for any problem, I have started looking whether TECH DOSE made any video on that or not, if yes, then I ignored all other channels blindly and I never disappointed. Thank you so much!!

  • @techdose4u

    @techdose4u

    3 жыл бұрын

    Welcome :)

  • @amitis9632

    @amitis9632

    3 жыл бұрын

    @@techdose4u I do the same, if I see a video from TECH DOSE I am done with my search.

  • @ravi7264

    @ravi7264

    2 жыл бұрын

    Same with me.

  • @udayptp

    @udayptp

    2 жыл бұрын

    @@ravi7264 🔥

  • @lakhwindersingh-qu6wj
    @lakhwindersingh-qu6wj4 жыл бұрын

    thank you tech dose. Finally someone explained this throughly

  • @techdose4u

    @techdose4u

    4 жыл бұрын

    Welcome :)

  • @Bhu22bhu22
    @Bhu22bhu223 жыл бұрын

    Nothing can be better than this, you really wanted to make things clear, simply awesome man. Thank You and keep up the good work.

  • @AtulKumarVermaOnline
    @AtulKumarVermaOnline3 жыл бұрын

    Most KZreadrs just teach how it works and just go through the algorithm. Thank you for also teaching why it works and how to think about it.

  • @mariocraft95
    @mariocraft95 Жыл бұрын

    Was able to use this algorithm to finish a spell checker assignment. Could not have done it near as well without this video!

  • @ashishm8850
    @ashishm88503 жыл бұрын

    Dude, you have my respect, and my thanks! 🙏

  • @techdose4u

    @techdose4u

    3 жыл бұрын

    Welcome :)

  • @bharathirv8479
    @bharathirv84793 жыл бұрын

    Hi, The code returns less than one value from the actual length of substring, so I return the value +1 (return lcs+1) now it returns the correct length. are my findings correct?

  • @atharvakulkarni2180
    @atharvakulkarni2180 Жыл бұрын

    Honestly, for beginners bottom up DP is not at all intuitive and your majority audience is beginner to medium level guys, so please try to explain DP problems using Top Down approach as well. BTW Very nice explanation. Thanks!

  • @jhilikkundu3158
    @jhilikkundu31583 жыл бұрын

    Most underrated channel

  • @techdose4u

    @techdose4u

    3 жыл бұрын

    :)

  • @geniusboys8204
    @geniusboys82043 жыл бұрын

    great explanation ! Thank you finally I understood it.....

  • @techdose4u

    @techdose4u

    3 жыл бұрын

    Nice :)

  • @SZ-jw9my
    @SZ-jw9my3 жыл бұрын

    Excellent video, thank you!

  • @techdose4u

    @techdose4u

    3 жыл бұрын

    Welcome

  • @chiragkamat4887
    @chiragkamat48874 жыл бұрын

    Very nicely explained. Thank you :)

  • @techdose4u

    @techdose4u

    4 жыл бұрын

    Welcome :)

  • @EngWorld-nr2ww
    @EngWorld-nr2ww2 жыл бұрын

    Nice and precise explanation than other available on youtube

  • @damaroro
    @damaroro Жыл бұрын

    YOUR VIDEO HELPS ME A LOT, THANKS SENSEI

  • @atefnazi753
    @atefnazi7533 жыл бұрын

    very well explained...want more DP solutions from you

  • @prasad.patil12
    @prasad.patil124 жыл бұрын

    Such a detailed and clear explanation 👍

  • @techdose4u

    @techdose4u

    4 жыл бұрын

    Thanks

  • @shaziasamreen8584
    @shaziasamreen85844 жыл бұрын

    Sir can't we use the string Matching method.Brute force approach is n*m and there are String Matching algorithms that reduce the complexity can't we use them with some manipulations and find the longest common substring

  • @shagunlamba6481
    @shagunlamba64813 жыл бұрын

    great explanation, recommending to everyone.

  • @techdose4u

    @techdose4u

    3 жыл бұрын

    Thanks

  • @BharadwajGiridhar
    @BharadwajGiridhar2 жыл бұрын

    Nice channel. I love your content!

  • @supernova7870
    @supernova78704 жыл бұрын

    Sir, do you have code for 0(N^3) approach , i solved it using 3 while loops , but the 3rd loop just execute for few statements , so i think its complexity is 0(N^2) .

  • @MrThepratik

    @MrThepratik

    3 жыл бұрын

    that would be average case time complexity

  • @pavankumar.m1341
    @pavankumar.m13412 жыл бұрын

    Now i understood the logic of this dynamic programming

  • @RahulKumar-wf9xx
    @RahulKumar-wf9xx3 жыл бұрын

    What is the time complexity for the recursive Approach? is it O(2^(m+n)) ??

  • @adityagoswami6881
    @adityagoswami68814 жыл бұрын

    Can you explain after getting the all diagonal number in dp table ,how to print the lcs strings

  • @vemulacharanrayadhanush3110

    @vemulacharanrayadhanush3110

    3 жыл бұрын

    check this code int main() { int t; cin>>t; while(t--) { int n,m; cin>>n>>m; string s,s1; cin>>s>>s1; vector dp(n+1,vector(m+1,0)); for(int i=1;i

  • @PrateekJesingh
    @PrateekJesingh3 жыл бұрын

    Good explanation of the dynamic programming bit but what was lacking was the intuition behind how you filled the table, please include that as well. You wouldn't expect anyone to just memorise the solution

  • @SammyTvMan
    @SammyTvMan2 жыл бұрын

    Very well spoken, thank you

  • @techdose4u

    @techdose4u

    2 жыл бұрын

    Welcome :)

  • @JoseFranc
    @JoseFranc9 ай бұрын

    Thank you so much

  • @shams_vai_360
    @shams_vai_360Ай бұрын

    what is the difference between longest common subsequence and longest common substring?

  • @where3639
    @where36393 жыл бұрын

    Excellent video keep up the good work

  • @techdose4u

    @techdose4u

    3 жыл бұрын

    Thanks :)

  • @yanamanagandlabhargavi4577
    @yanamanagandlabhargavi45772 жыл бұрын

    Great explanation

  • @adityapandey9639
    @adityapandey96393 жыл бұрын

    What will be the recursive approach of this Q?? We can't return 0 if it's character is not matching!

  • @spartan5816

    @spartan5816

    3 жыл бұрын

    Watch aditya verma YT channel. Thank me later

  • @adityapandey9639

    @adityapandey9639

    3 жыл бұрын

    @@spartan5816 bhai I have already watched his video it was nice bt he used to spend more time in relating the Q rather than developing the concept.. Didn't worked well in my case 🙃

  • @sauravgsh16
    @sauravgsh164 жыл бұрын

    Great explanation. Can you also provide a space optimized solution for the same ?

  • @techdose4u

    @techdose4u

    4 жыл бұрын

    Will try to....actually too many important requested videos are already pending. So, i want to focus on important topics for now 😅

  • @sauravgsh16

    @sauravgsh16

    4 жыл бұрын

    @@techdose4u glad for the response .. will wait till you have time to upload one .. thanks ..

  • @Pooh__7__
    @Pooh__7__3 жыл бұрын

    Such an amazing video

  • @techdose4u

    @techdose4u

    3 жыл бұрын

    Thanks :)

  • @ShaliniNegi24
    @ShaliniNegi243 жыл бұрын

    thanks for the videos

  • @techdose4u

    @techdose4u

    3 жыл бұрын

    Welcome :)

  • @andresnamm982
    @andresnamm9823 жыл бұрын

    You are awesome!

  • @techdose4u

    @techdose4u

    3 жыл бұрын

    Thanks :)

  • @impatientgaming9868
    @impatientgaming98687 ай бұрын

    good one

  • @ibrahimshaikh3642
    @ibrahimshaikh36424 жыл бұрын

    Very good. Which whiteboard software u use

  • @AyushSingh-oq2fm
    @AyushSingh-oq2fm2 жыл бұрын

    does it have any recursive approach with memorisation??

  • @techdose4u

    @techdose4u

    2 жыл бұрын

    Yes it does

  • @AyushSingh-oq2fm

    @AyushSingh-oq2fm

    2 жыл бұрын

    Please provide it's link I am struggling to come up with it's recursive logic

  • @prateeksrivastava9
    @prateeksrivastava94 жыл бұрын

    You made DP So Easy

  • @techdose4u

    @techdose4u

    4 жыл бұрын

    Thanks man :)

  • @praveenchouhan6388
    @praveenchouhan63884 жыл бұрын

    awesome explaination!!!!!!!!!!!!!! your way just super cool, thanks a lot!!!

  • @techdose4u

    @techdose4u

    4 жыл бұрын

    Welcome :)

  • @thatindianboy2817
    @thatindianboy2817 Жыл бұрын

    Any DFS Java solution?

  • @ankitaverma2271
    @ankitaverma22714 жыл бұрын

    Can you please tell me about [i-1] =[j-1] Which index we are taking and how.?

  • @techdose4u

    @techdose4u

    4 жыл бұрын

    Because dp table is indexed from 1 (as index 0 in table means empty string) but the string position is always index from 0 (as index 0 means first character).

  • @ankitaverma2271

    @ankitaverma2271

    4 жыл бұрын

    @@techdose4u Thank youu. I got that.

  • @ankitaverma2271

    @ankitaverma2271

    4 жыл бұрын

    As in the example you explained of there js no match in the characters then mark the dp row coloumn as zero. Shouldn't we mark the max of row and coloumn??

  • @techdose4u

    @techdose4u

    4 жыл бұрын

    Max will be taken if we form subsequence where characters can be skipped but in this case you are matching substring, so whenever mismatch occurs, you cannot skip that character, you need to start from length 0 from the next character. This is the difference between subsequence and substring.

  • @parnitasharma8898
    @parnitasharma88983 жыл бұрын

    Great job

  • @techdose4u

    @techdose4u

    3 жыл бұрын

    Thanks

  • @osmantahir8659
    @osmantahir86593 жыл бұрын

    How to find a smallest number in the longest subsequence? in a dense subsequence. Dense subsequence means that the i+1 element should be less than or equal to 2 with the ith element in the subsequence

  • @vallishreddy8263
    @vallishreddy82633 жыл бұрын

    good explanation

  • @techdose4u

    @techdose4u

    3 жыл бұрын

    Thanks

  • @shubhamjaiswal7645
    @shubhamjaiswal764513 күн бұрын

    explanation was good ...but what about memoization and recursion .... rather it would give TLE i know but you should firstly tell that n......

  • @sayantaniguha8519
    @sayantaniguha85193 жыл бұрын

    Recursive solution? I don't care about TLE but need it for clear explanation

  • @salmanfaries3064
    @salmanfaries30643 жыл бұрын

    Would u have longest decreasing substring

  • @techdose4u

    @techdose4u

    3 жыл бұрын

    It's the same. Do LIS from the end.

  • @sakthim7160
    @sakthim71604 жыл бұрын

    One character can't be string know? Then how you can say a single character as subject?Or did we can say a single character is a substring?

  • @techdose4u

    @techdose4u

    4 жыл бұрын

    A single character is also a string actually. It's a string of length 1. Dont confuse with char and string datatypes. Think in general sense. A string can have no characters too (empty string).

  • @sakthim7160

    @sakthim7160

    4 жыл бұрын

    @@techdose4u thank you

  • @sreekanththota2200
    @sreekanththota22004 жыл бұрын

    sir,I like your Great explanation .....

  • @techdose4u

    @techdose4u

    4 жыл бұрын

    Thanks :)

  • @tejasghone5118
    @tejasghone51184 жыл бұрын

    Great Explaination !! Can you do the unique path question from leetcode? qs-62

  • @techdose4u

    @techdose4u

    4 жыл бұрын

    Sure....I think I have already done. Don't remeber 😅 If not then I will do it in future.

  • @tejasghone5118

    @tejasghone5118

    4 жыл бұрын

    @@techdose4u no u haven't done that coz from last month whenever i get stuck on some qs I search for your videos first😂

  • @sayantaniguha8519

    @sayantaniguha8519

    3 жыл бұрын

    Link?

  • @soulehshaikh8799
    @soulehshaikh87993 жыл бұрын

    Easiest Explanation ever

  • @575saisri4
    @575saisri44 жыл бұрын

    sir can u provide solutions of hackwithinfy round 1 2020 questions also plzz?

  • @techdose4u

    @techdose4u

    4 жыл бұрын

    I will try this weekend. Are the questions and editorials for the same are available?

  • @saisrisai9649

    @saisrisai9649

    4 жыл бұрын

    Yes sir.

  • @techdose4u

    @techdose4u

    4 жыл бұрын

    Okay...then I will try to find some time on weekend. But I can't guarantee.

  • @suryakiran2970
    @suryakiran2970 Жыл бұрын

    super

  • @techdose4u

    @techdose4u

    Жыл бұрын

    Welcome :)

  • @sais7065
    @sais7065 Жыл бұрын

  • @techdose4u

    @techdose4u

    Жыл бұрын

    🙏🏼

  • @sakthim7160
    @sakthim71604 жыл бұрын

    Why you are keeping all the elements as zero In the first row and column of a matrix? If any one of string doesn't contain any character, then we can simply say the result by using a single if conditions! And here 6x6 matrix is enough to perform what you have explained but why you are taking 7x7 matrix? Your space complexity is O(n1+1 * n2+1) complexity why? If I am using n1xn2 matrix that is 6x6 I have faced diagonal problem in matrix but I can solve it by putting a extra one condition! I want a explanation from your side kindly waiting for your reply! I think checking for the previous result that is previous diagonal only you are using the extra space

  • @techdose4u

    @techdose4u

    4 жыл бұрын

    If condition is costlier. The if condition will be compared for each of the 36 cells. If you just fill it with 0 then time complexity is heavily improved. Think about 100 by 100 matrix. You will be comparing if for all 10000 cells while you can simply put 199 zeroes when you already know they will be zero. 2nd reason is to make the formula work seamlessly and reduce the code complexity. So you gain both in terms of TIME and CODE complexity. I have explained why it will be 0 by the way :)

  • @sakthim7160

    @sakthim7160

    4 жыл бұрын

    @@techdose4u thanks for your explanation😍you are almost responding to all of my comments. Thank you

  • @techdose4u

    @techdose4u

    4 жыл бұрын

    Welcome :)

  • @bismeetsingh352
    @bismeetsingh3523 жыл бұрын

    @9:46 , why does the position even matter? Eg. s0 = "acdghr" s1 = "cdghra", cdghr are at different positions but that is a valid answer.

  • @techdose4u

    @techdose4u

    3 жыл бұрын

    In LCS, order matters right ?

  • @bismeetsingh352

    @bismeetsingh352

    3 жыл бұрын

    @@techdose4u order yes,positions no.

  • @chessmaster856
    @chessmaster8562 жыл бұрын

    Start with 0 n-1, then 1 n-1, then 0 n-2 etc. Stop at the first palindrome. Everything else will be smaller so no need to check. No dp required

  • @harshareddy2772

    @harshareddy2772

    11 ай бұрын

    if that's the case please provide program

  • @coderpriyabrat3585
    @coderpriyabrat35853 жыл бұрын

    💕💕💕💕💕💕💕💕💕💕

  • @techdose4u

    @techdose4u

    3 жыл бұрын

    ;)

  • @coderpriyabrat3585

    @coderpriyabrat3585

    3 жыл бұрын

    @@techdose4u nice explanation ❤️

  • @techdose4u

    @techdose4u

    3 жыл бұрын

    Thanks :)

  • @huangCAnerd
    @huangCAnerd Жыл бұрын

    Absolute insanity that this solution TLEs on CodeSignal.

  • @madhurjyadas1471
    @madhurjyadas14714 жыл бұрын

    You stretch the video so long with some random unnecessary explanations.

  • @techdose4u

    @techdose4u

    4 жыл бұрын

    For some it may be unnecessary and for some it may be necessary. I explained assuming a beginner is watching. So people who already knows stuffs will feel its too long 😅 That's only my personal opinion though.

  • @sreekanththota2200

    @sreekanththota2200

    4 жыл бұрын

    @@techdose4u thats true bro....am a beginner

  • @ruthwang9177

    @ruthwang9177

    3 жыл бұрын

    @@techdose4u I find your explanation very helpful!

  • @techdose4u

    @techdose4u

    3 жыл бұрын

    Thanks

  • @petarulev6977
    @petarulev6977 Жыл бұрын

    very bad explanation