23 Printing Longest common subsequence

Поділитися
Вставка
  • Опубліковано 3 жов 2024
  • Printing Longest Common Subsequence
    Given two sequences, print the longest subsequence present in both of them.
    Example:
    LCS for input Sequences “ABCDGH” and “AEDFHR” is “ADH” of length 3.
    PROBLEM STATEMENT LINK:www.geeksforge....
    Playlist Link: • Dynamic Programming | ... .
    ------------------------------------------------------------------------------------------
    Here are some of the gears that I use almost everyday:
    🖊️ : My Pen (Used in videos too): amzn.to/38fKSM1
    👨🏻‍💻 : My Apple Macbook pro: amzn.to/3w8iZh6
    💻 : My gaming laptop: amzn.to/3yjcn23
    📱 : My Ipad: amzn.to/39yEMGS
    ✏️ : My Apple Pencil: amzn.to/3kMnKYf
    🎧 : My Headphones: amzn.to/3kMOzM7
    💺 : My Chair: amzn.to/385weqR
    🛋 : My Table: amzn.to/3kMohtd
    ⏰ : My Clock: amzn.to/3slFUV3
    🙋🏻‍♀️ : My girlfriend: amzn.to/3M6zLDK ¯\_(ツ)_/¯
    PS: While having good gears help you perform efficiently, don’t get under the impression that they will make you successful without any hard work.

КОМЕНТАРІ • 730

  • @srana977
    @srana977 4 роки тому +2808

    It seems so long video, but same video is repeating again... watch till 26:47

    • @RathourShubham
      @RathourShubham 4 роки тому +58

      he should pin this comment.

    • @abhishekranjansingh5348
      @abhishekranjansingh5348 4 роки тому +47

      I anyone sees this message , just like it to the maximum extent so that the comment gets some importance.

    • @sudhanshusharma9123
      @sudhanshusharma9123 4 роки тому +123

      Thank you so much man. This scared me in the starting thinking that printing LCS is so tough considering the duration of the video

    • @KANHAIYAKUMAR-qi7gx
      @KANHAIYAKUMAR-qi7gx 3 роки тому +69

      Thanks @surinder kumar I used to skip this video for last 2 months because of its length.

    • @Rahulkumar-sk5yd
      @Rahulkumar-sk5yd 3 роки тому +10

      @@KANHAIYAKUMAR-qi7gx lol😅. Me too

  • @yashveernathawat8154
    @yashveernathawat8154 4 роки тому +965

    Modi Ji after meeting Aditya in Real Life :-
    Yeh DP wala hai kya ?????..

    • @TheAdityaVerma
      @TheAdityaVerma  4 роки тому +153

      😂😂😂😂😂😂😂😂😂

    • @uttharapallysaichandra3298
      @uttharapallysaichandra3298 4 роки тому +4

      😂😂😂

    • @hemantmangwani1006
      @hemantmangwani1006 4 роки тому +37

      Sahi he. 😂😂😂😂😂😂😂😂😂
      And after seeing these videos we say wah Aditya Bhai wah. , wah Aditya Bhai wah.
      And other Yotubers bole to bole kya Kare to Kare kya, wah Aditya Bhai wah.
      😂😂😂😂😂😂😂😂😂

    • @AshishChourasia1996
      @AshishChourasia1996 4 роки тому +5

      Hahaha epic, also I gave u the 100th like 😁

    • @mtr2936
      @mtr2936 3 роки тому +2

      Aditya sir u r amazing

  • @ngtv5608
    @ngtv5608 3 роки тому +140

    Need a playlist of GRAPHS !!

    • @ayushvats1808
      @ayushvats1808 3 роки тому +2

      yes 💯 please sir 🙏

    • @sarthakarora6496
      @sarthakarora6496 2 роки тому

      @@ayushvats1808 did you find any?

    • @himanshugiri4214
      @himanshugiri4214 2 роки тому

      yes please

    • @nishantsah6981
      @nishantsah6981 2 роки тому

      @@sarthakarora6496 i found One Ridhi dutta.... like its good...but if you get any better do tell

    • @mudrad1930
      @mudrad1930 2 роки тому

      @@nishantsah6981 striver and codebix

  • @0anant0
    @0anant0 4 роки тому +95

    23 of 50 (46%) done! Nice explanation of printing -- yes, there is a repetition of concept, but the second half explains it in more details, especially how we traverse up the t matrix (IMHO) to get the common chars.

  • @dankyt9249
    @dankyt9249 4 роки тому +76

    Aditya Verma: Interesting tha na!!!!! :)
    Inner me: Yeah!!!!! Veryyyyyyy Interesting :D

    • @TheAdityaVerma
      @TheAdityaVerma  4 роки тому +25

      😅😅 Glad to know that 😅😅

    • @deepmodiya889
      @deepmodiya889 2 роки тому

      @@TheAdityaVerma this question is not complete right.

  • @debashishnanda9068
    @debashishnanda9068 4 роки тому +35

    Best DP playlist on youtube!! You have really contributed to learning of students who struggle with Dynamic Programming. I too had observed similarities in DP questions, but as I am a beginner, I did not have enough experience to relate stuffs. You have made someone's life easier. Keep going, looking forward to more videos!!

  • @bsmithun
    @bsmithun 3 роки тому +15

    Looks like for printing LCS, we can always use only the last row in the table.
    i = m-1;
    for (int j=0; j < n; j++)
    if (t[i][j] != t[i][j+1])
    cout

    • @rahilsanghavi9347
      @rahilsanghavi9347 2 роки тому

      That's a very good observation bro

    • @kartikeshwarhingole6007
      @kartikeshwarhingole6007 2 роки тому +1

      Yeah, Bro your solution is absolutely correct. I used your method to find the longest sub-sequence string in leetcode problem "Longest Common Subsequence" , and then returned the length of the string to verify, and solution was accepted. Basically I just used the code of "Longest Common Sub-Sequence" and just utilised the last row for my answer.
      int dp[1002][1002];
      class Solution {
      public:
      int longestCommonSubsequence(string s1, string s2) {
      int i, j, n=s1.length(), m=s2.length();
      string s;

      for(i=0;i

    • @AnilabhaDatta
      @AnilabhaDatta 2 роки тому

      www.hackerrank.com/challenges/dynamic-programming-classics-the-longest-common-subsequence/problem
      wa in test2,3

    • @ayushk4142
      @ayushk4142 2 роки тому

      why this doesn't work if we consider the last column consider the example shown in video itself at 16:39

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

      what happen if multiple lcs exist then you approach the problem ??

  • @aanjneytewari1554
    @aanjneytewari1554 4 роки тому +9

    I don't think i've seen better explanations, when it comes to dynamic programming. Sir, you are a life saver!

  • @jeBHARATHKUMAR
    @jeBHARATHKUMAR 2 роки тому +15

    my freinds used to say dp is tough in those days when i am beginner , now because of your playlist sir . i felt dp was not tough when we have teachers like you sir. in my 12th i used to link maths concepts so i dont need to remember new concepts, now you told us the dp in the same way which made the work easy 💌..thank you sir..

  • @Adityakumar-nj6pk
    @Adityakumar-nj6pk 4 роки тому +70

    Ur channel is best channel for placements preparation

    • @TheAdityaVerma
      @TheAdityaVerma  4 роки тому +15

      Thanks, do share if you like the content and help this channel grow. And yeah subscribe too 😅😅

    • @nikhilbhadragiri6134
      @nikhilbhadragiri6134 4 роки тому

      @@TheAdityaVerma bro please help in solving one LCS typical problem give your WhatsApp number I will keep the question

    • @naiksachin6524
      @naiksachin6524 3 роки тому +1

      placement hua ?

  • @subhadeephalder1480
    @subhadeephalder1480 4 роки тому +15

    Awesome videos. Ground concepts explained so vividly. Will be glad if videos on graphs are made.

  • @DharmicYoddha
    @DharmicYoddha 4 роки тому +62

    did I just watch this solution 3 times? I got scared when I saw video length at first. 27 minutes makes sense given how you describe.

    • @indranilthakur3605
      @indranilthakur3605 4 роки тому +10

      I got scared seeing the length of the video as 1 hr 20 mins.

    • @lordbaggot
      @lordbaggot 4 роки тому +26

      same dude, I left it for 2 days, thinking it was too big :(

    • @saurabhmarpadge7498
      @saurabhmarpadge7498 4 роки тому +4

      @@lordbaggot same thing happend here too

    • @ShivamSingh-vh1xz
      @ShivamSingh-vh1xz 4 роки тому +2

      @@lordbaggot same here 😂😂

    • @saebalam2498
      @saebalam2498 3 роки тому

      @@indranilthakur3605 same .....haha

  • @LaxmikantRevdikar
    @LaxmikantRevdikar 3 роки тому +19

    a good optimisation in this solution might be to just iterate till following condition is true while constructing the answer in reverse order
    while(dp[i][j] > 0) instead of going till i or j is 0

    • @rohit2571
      @rohit2571 2 роки тому

      yes I already got that, Thanks for confirmation.

  • @prashantiiitd2705
    @prashantiiitd2705 2 роки тому +1

    JUST WANTED TO SAY - "THIS DP PLAYLIST IS A GEM", i recommend everyone to watch who faces difficulties in DP problems.

    • @prashantiiitd2705
      @prashantiiitd2705 2 роки тому

      and I also Wanted to say a Big Thank you to Aditya Verma bhaiya for making this playlist and uploaded on youtube as free for everyone.

  • @AdityaMandil
    @AdityaMandil 4 роки тому +95

    Bro make a playlists for greedy Algorithms !!

  • @jayshree7574
    @jayshree7574 4 роки тому +40

    I was really scared with the lenght, mentally preparing myself thanks for the comments guys. and thanks aditya pls pls pls do graph theory and greedy, 1 month hai placement me and I wnt a job really badlyy

    • @amanvijayvargiya3468
      @amanvijayvargiya3468 4 роки тому +8

      for graph you can prefer Tech Dose UA-cam Channel. He is too good.

  • @ayushthakur733
    @ayushthakur733 3 роки тому +5

    Was first afraid after noticing the length of the video but after I started I understood the concept in 15 min 😂 you are the best teacher

  • @ajaynikalje3857
    @ajaynikalje3857 12 днів тому

    You are helping me for DSA prep. Thanks. Another solution for this problem.

  • @shashankjain4676
    @shashankjain4676 4 роки тому +7

    One of the best tutorials on UA-cam for DP. God bless you.
    Please add playlist on Greedy algorithm, backtracking and Graphs if possible.
    Thx a ton

    • @thinkingmad1685
      @thinkingmad1685 2 роки тому

      Hey can u help me regarding backtracking greedy any yt channel?

  • @deepinderjeetsingh8356
    @deepinderjeetsingh8356 4 роки тому +4

    I was not getting even single concept of DP from other channels, but after watching your videos on DP I am doing it daily with great interest. Also looking forward for videos on Graph Data structure.

  • @mdbahauddin1252
    @mdbahauddin1252 4 роки тому +30

    Actually, this video ends at 26:51, by mistake it repeats 3 times and becomes 1:20:55

  • @ayaztanzeem2475
    @ayaztanzeem2475 4 роки тому +23

    Brilliantly explained. I am finding this channel very helpful. Thanks Bro and All The Best for future. Also, this video has one video running 3 times. Fix it, if posiible.

    • @TheAdityaVerma
      @TheAdityaVerma  4 роки тому +14

      IK, but unfortunately it cant be fixed now 😕

    • @TheAdityaVerma
      @TheAdityaVerma  4 роки тому +18

      Will upload more video in the month of may !! Till then keep on sharing and help this channel grow + that keeps me motivated to make more videos !! ✌️❤️

    • @praveenugiri
      @praveenugiri 4 роки тому +1

      @@TheAdityaVerma Waiting for "May", Thanks Brother! Great Explanation!❤️

    • @gajawadaraviteja7087
      @gajawadaraviteja7087 4 роки тому

      @@TheAdityaVerma can you say which topic you are going to discuss ,
      can you say date in May
      So that we can schedule that topic in may

  • @soniamalik4929
    @soniamalik4929 3 роки тому +4

    DP requires so much effort to understand but once understood you will be the person with much powerful brain.

  • @ayushsharma-bw5ch
    @ayushsharma-bw5ch 2 роки тому +3

    i used another approach and it worked fine :-
    1)make dp of strings.
    2)initialize with empty strings instead of 0.
    3)when i-1==j-1 ,do dp[i][j]=dp[i-1][j-1]+string1[i-1]
    else
    do
    if(dp[i][j-1].size()>dp[i-1][j].size() )
    dp[i][j]=dp[i][j-1]
    else
    dp[i][[j]=dp[i-1][j]
    4)woah! done just return dp[n1][n2];

    • @udaytewary3809
      @udaytewary3809 28 днів тому

      Really thanks bhai I was also thinking the same but couldn't able to write the code correctly u helped me thanks

  • @surabhisingh9956
    @surabhisingh9956 4 роки тому +3

    Been watching your videos since past 3-4 days and I'm sure I'm understanding each and every bit of it. Thanks a lot 😊

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

    best playlist I have followed till date!

  • @okeyD90232
    @okeyD90232 3 роки тому +1

    The way you taught in all previous videos , it didn't take me anytime to think of the solution and I could write the code in one go. But I watched this whole video to make sure I am not missing anything.

  • @rollercoaster9719
    @rollercoaster9719 Рік тому

    You can also use this logic the print lcs, that too i n correct order lol. took me a while to think it out
    string s;
    if(t[n][1]==1) s.push_back(text2[0]);
    for(int i=2;i

  • @jyotis_12
    @jyotis_12 4 роки тому

    Aditya Verma Sir aapne ne mere aur sayad jo bhi bachhe iss video ko dekhenge unn sab ka DP ka daarrr bhaga diya bohot sukriyaa...

  • @ishaankulkarni49
    @ishaankulkarni49 3 роки тому +1

    please dont stop making videos!! this playlist is genius!

  • @akashtyagi7182
    @akashtyagi7182 4 роки тому +14

    Thanks for dp series.
    For printing lcs, we can just take last row of dp table, and jaha jaha integer first time occurr hora hai, vo index string2 me se print karado, answer mil jaega.

  • @devanshmesson2777
    @devanshmesson2777 3 роки тому +1

    Thank you so much!!
    Best video on youtube for DP!!

  • @shifalitayal3332
    @shifalitayal3332 4 роки тому +3

    u are really a great mentor....plz make playlist on graph too...

  • @coderscode5364
    @coderscode5364 4 роки тому +11

    segment tree and two pointer technique par video bnao......please
    aur aapki series superb hai ...it's really amazing

  • @theuiniqueps10
    @theuiniqueps10 4 роки тому +2

    You are god's gift to those who don't want to go/pay for coding institutes 🤠
    Thanks for making this legendary dp playlist 😎♥️🎯

  • @srushtipawar7738
    @srushtipawar7738 4 роки тому +2

    Best videos on dynamic programming so far.Please make videos on trees/graphs questions or important questions from leetcode and other coding platforms.

  • @ChandraShekhar-by3cd
    @ChandraShekhar-by3cd 4 роки тому +1

    Aditya , Your are SuperMan of the coding community..Please upload some more videos as we are having more freee time these days to learn and grasp new concept...Thanks

  • @dhruvbhati1347
    @dhruvbhati1347 Рік тому +2

    After seeing the length of this video my instincts said to me there might be a possibility of wrong editing... And it turned out true.. Lol. Great content sir, thank you 🙏❤

  • @priyarathore9266
    @priyarathore9266 3 роки тому +1

    Best DP course on internet!

  • @cleweric
    @cleweric Рік тому +1

    We can do this in this following way too. Just a small change from original question. No need to create a dp array of int.
    vector dp(n+1, vector (m+1, ""));
    for(int i=1; i

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

      Did u use memoization? Because of initialising full table with " "

  • @kodeHubb
    @kodeHubb 2 роки тому +1

    Bhai dil se sukriya padhaane k liye. ❤

  • @prabhatpandey1638
    @prabhatpandey1638 4 роки тому +2

    Great going Aditya. I was always afraid of DP but you made it look so simple. I really needed someone to explain it from the start and found your playlist. Hats off to your teaching skills :)

  • @tanmaysahare2353
    @tanmaysahare2353 2 роки тому +1

    Bhai bht hi jabardast padhate ho aap ek ek concept clear ho gai thanku so much it really helped it

  • @prakhartiwari4916
    @prakhartiwari4916 3 роки тому +2

    we can directly store the strings in the matrix, we can initialise the 0th row and column with an empty string and when s1[i-1] == s2[j-1] we can do this - t[i][j] = s1[i-1] + t[i-1][j-1] else
    if(t[i-1][j].length() > t[i][j-1].length()){
    t[i][j] = t[i-1][j];
    }else{
    t[i][j] = t[i][j-1];
    }
    and print reverse of t[m][n] in the end

  • @_PAYALGAIKWAD
    @_PAYALGAIKWAD 2 роки тому +1

    best dp course on the internet

  • @sushruths1786
    @sushruths1786 4 роки тому +4

    This channel is like the best channel for placement preparation, i have learnt so many concepts from this channel, which they never taught in college. Keep up this work and continue making more videos. These videos are really helpful. Thank you so much for these preparation skills.

  • @mrsukki8158
    @mrsukki8158 3 роки тому +1

    Brother in general out of 10 hindi words I can understand only 2
    But in your teaching concepts taught me language
    What type of legend you are bhai❤️
    Keep going ur explanation

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

    You can just add the strings directly to the table instead of length:
    def lcSubString(text1, text2):
    m = len(text1)
    n = len(text2)
    t = [["" for i in range(0, n+1)]
    for i in range(0, m+1)]
    for i in range(1, m+1):
    for j in range(1, n+1):
    if text1[i-1] == text2[j-1]:
    t[i][j] = t[i-1][j-1] + text1[i-1]
    else:
    if len(t[i-1][j]) > len(t[i][j-1]):
    t[i][j] = t[i-1][j]
    else:
    t[i][j] = t[i][j-1]
    return t[m][n]

  • @siddhantjaiswal5999
    @siddhantjaiswal5999 4 роки тому +1

    I was just scared because of the length of the video, the Way explains is incredible 👍 ❤ lots of Love from ITER,BBSR

  • @rishavkumar2182
    @rishavkumar2182 4 роки тому +1

    Excellent videos...loved it

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

    would really like a playlist on graphs but its fine whenever you get time please make one thankyou

  • @prajwalr6849
    @prajwalr6849 3 роки тому +1

    This problem can be solved in another method just like original LCS problem. Initialize first row and column with empty strings. As we iterate if match happens we keep adding the character and store the string itself in t matrix. last element will be the answer. For length we can just measure length of the final string. We can even print all possible subsequences easily by this approach. And we don't have to do anything after filling the t matrix.

  • @bigfan9268
    @bigfan9268 2 роки тому +7

    // Instead of adding 1 to the result we add the common
    // character to the end of the value we already have
    // else we just take whatever option has the longer string
    string longestCommonSubsequence(string s1, string s2) {
    int m = s1.size();
    int n = s2.size();
    string dp[m+1][n+1];
    for(int i=0;i

    • @geetanshjindal5467
      @geetanshjindal5467 2 роки тому

      This is a much more intuitive method

    • @sudarshansingh7432
      @sudarshansingh7432 2 роки тому

      You can get the chars without using dp for n^2 complexity by just taking a string and appending at the end if true for the if condition.

    • @sudarshansingh7432
      @sudarshansingh7432 2 роки тому

      Moreover, a better approach would be to adding two lists and taking complement.

    • @ganavin3423
      @ganavin3423 Рік тому

      bro,
      can you provide the link gfg ,leetcode

    • @pinkkitty6553
      @pinkkitty6553 Рік тому

      how to get all the lcs ?

  • @mandeep2192
    @mandeep2192 4 роки тому +1

    now kind of feeling some confident in DP. thnx to u bro... Brilliant efforts..

  • @mridulkumar786
    @mridulkumar786 4 роки тому +7

    Before watching your videos* Dp is out of my syllabus.
    After watching your video* I can teach dp now 😅

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

    Thank you so much for these videos .

  • @rahulchudasama9363
    @rahulchudasama9363 4 роки тому

    The way you are teaching I think u will become the number one teacher. You teaching style is like koi apna banda baju me beth ke padha rha ho....

  • @shradhagupta8897
    @shradhagupta8897 3 роки тому

    Aditya Verma you are freaking awesome..

  • @DeepakKumar-yc9hr
    @DeepakKumar-yc9hr 4 роки тому +1

    Love YOu Bro , Really Your Video is God Level

  • @oqant0424
    @oqant0424 3 роки тому

    hats off to your efforts!

  • @samirrobin3524
    @samirrobin3524 2 роки тому

    What an amazing playlist!! Thank you so much Aditya bhaiya❤️❤️

  • @Vendettaaaa666
    @Vendettaaaa666 4 роки тому +1

    You can also think of this approach like a Depth First Search and we choose "adjacents" based on the choices we previously made in the past to build the 2D array.

  • @adityarajiv6346
    @adityarajiv6346 4 роки тому +1

    really helpful brother!.also can you please tell me how to print longest common substring.?...and one more thing to this is that if multiple answers exist then choose the one with smaller starting index.
    thanks!.

  • @yashkunte2012
    @yashkunte2012 4 роки тому

    Its such a important topic ki bhai ne video me 2 bar revise kara diya hai ...amazing and simple to understand without any doubts

  • @aniketraj_0520
    @aniketraj_0520 2 роки тому +3

    We might not need to traverse the dp array again, as while matching the characters we can add the common characters in the string variable that we can create before the iteration.
    void printLCS(string &a, string &b, int n, int m)
    {
    vector dp(n+1, vector(m+1));
    for(int i=0; i

    • @yogeshyadav8906
      @yogeshyadav8906 Рік тому

      i think we need to start from backtrack only because if the character is present multiple times in string then it will add it again to ans which we dont want unless it is present in both

  • @ichigo138
    @ichigo138 3 роки тому +7

    Instead of reversing we can initialise the string sol = " " initially and when they are equal then update sol to CharAt(" str1") + sol and return sol at the end

  • @myqalb123
    @myqalb123 4 роки тому

    Itnaaaaaaaa explained video...WOW
    thank you bhaiyya for all your efforts.

  • @pritishsaha7647
    @pritishsaha7647 3 роки тому +1

    Awesome content now I understand how to proceed with such questions
    One more question what will be the code variation if it had been printing substring

  • @AlinaMirzaCS-
    @AlinaMirzaCS- 3 роки тому

    i just saw 19 min and got the code...really great playlist ..

  • @devanshdixitmusicallyyours3885

    I wish he should has video on graph as well, we really need to study from u

  • @69upasonabiswas88
    @69upasonabiswas88 3 роки тому

    god of DP. Thank you sir for making our life easier.. :)

  • @visheshrathi4752
    @visheshrathi4752 2 роки тому

    The length of this video scared the shit out of me 😂. I was thinking of skipping it then I read the comments and I'm glad I did

  • @navneetsaraf9996
    @navneetsaraf9996 3 роки тому

    Ooo guru chaaah gyee....Ek dum chapp gya dimag mein..DP😄😁

  • @liveinspirationallife
    @liveinspirationallife 3 роки тому

    bhai ji kamaal ho tusi...aar paar ki DP smjare ho

  • @火影-z9r
    @火影-z9r 4 роки тому +3

    best content on dp

  • @mohitshoww
    @mohitshoww 4 роки тому +4

    Bhai 1.20 dekh ke dar gaye the ki kya Hoga print LCS me .. 😂
    Thanks for making these videos and all the best for flipkart.

  • @user-do9ix9wq2v
    @user-do9ix9wq2v 3 роки тому +7

    at first glance seeing the time stamp as 1:20 made me feel scared that what the sir is going to teach in this much time but after 26:57. me be like : aapke sath ek chota sa prank hua hai!!

  • @ShubhamRaj-jj2tn
    @ShubhamRaj-jj2tn 3 роки тому +2

    Bhai backracking ki bhi playlist bna lo

  • @aryansinha1818
    @aryansinha1818 2 роки тому

    The video is till 26:00 only, man the thumbnail should change for a guy who is developing the habit of sitting down to study, this video length could be really scary and easily delay continuity. So much relief now. ohhh!!!!!! n one could easily learn something from this i.e. everything's a mind-set think of it as small everything changes and think of it as big, whoosh! power to accomplish decreases. LOL. So make the big small and go on!!. Btw thank you for the videos it helps a lot.

  • @the_shridhar
    @the_shridhar 2 роки тому +2

    others dp tough hai, dp yeh, dp woh
    aditya: hold my t

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

    I understand the whole approach but it can be very simply solved when using the original code, basically wherever we are calling t[i][j] = 1 + t[i-1][j-1] just add print(x[i-1]) and you get the simple output as reverse of longest common subsequence order which you can reverse in multiple wayss ??
    Correct me if I am wrong

  • @lovleshbhatt7797
    @lovleshbhatt7797 4 роки тому +3

    Seriously aditya bhaiya please reduce the length of video, I love your videos I m following your DP series and I am feeling proud to say that I have understood alot and before you I watched video of ALL UA-camRS like CodeNcode, Abdul Bari, TakeUforward But When I understood the problem then after several weeks I just forgot the Solution, But You describe in such a way that we don't required to read this again THANK YOU, YOU ARE THE ONE OF THE BEST CREATURES OF GOD.
    But there is only One problem in video which is You are repeating so much and increase the length of video, Buddy please correct this

    • @TheAdityaVerma
      @TheAdityaVerma  4 роки тому +6

      Thanks brother, btw this video got repeated 3 times (editing error), just watch the first 30 minutes or so.

    • @saranghae3720
      @saranghae3720 2 роки тому +1

      @@TheAdityaVerma thanks a lot bhaiya, for ur existence... : )

  • @vaibhavkumar267
    @vaibhavkumar267 3 роки тому +6

    I had a doubt, during the creation of table " t ", we do check for characters to be similar ( with this code : if a[i-1] == b[j-1] and then we do necessary increments for the LCS count ), then we can actually push the characters to a string at that very moment right ? Like instead of performing what Aditya just said in the above video.
    EDIT : My method was wrong, I dry run the code and checked, we will get multiple chars as well so the above approach is the right one .

    • @krishnapaltomar8768
      @krishnapaltomar8768 3 роки тому

      I had same doubt thanks for editing and clearing it out

    • @siddhant_yadav
      @siddhant_yadav 3 роки тому

      Same Doubt, Can u please Explain why there is Repetition of characters

    • @riturajghosh937
      @riturajghosh937 3 роки тому +1

      @@siddhant_yadav check for example: str1="abx", str2="xab", the main point is as we have to find the max length subsequence there can be multiple occurrences where str1.charAt(i-1)==str2.charAt(j-1) but that character does not contribute in the max length subsequence.

    • @motormaza_riders
      @motormaza_riders 3 роки тому

      but it says longest common subsequence, not substring

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

    We can also return longest common subsequence directly from the function. The tested code using memoization is as shown
    #include
    string t[1001][1001];
    string longestsub(string s1,string s2,int n,int m){
    if (n == 0 || m == 0)
    return t[n][m] = "";
    if (t[n][m] != "-1")
    return t[n][m];
    if (s1[n-1] == s2[m-1]){
    string lcs = longestsub(s1,s2,n-1,m-1);
    lcs.push_back(s1[n-1]);
    return t[n][m] = lcs;
    }
    else if (s1[n-1] != s2[m-1]){
    string l1 = longestsub(s1,s2,n-1,m);
    string l2 = longestsub(s1,s2,n,m-1);
    if (l1.length() >= l2.length())
    return t[n][m] = l1;
    else if (l1.length() < l2.length())
    return t[n][m] = l2;
    }
    }
    string findLCS(int n, int m,string &s1, string &s2){
    // Write your code here.
    for (int i = 0; i < 1001; i++) {
    for (int j = 0; j < 1001; j++) {
    t[i][j] = "-1";
    }
    }
    string ans=longestsub(s1,s2,n,m);
    return ans;
    }

  • @niveditaprity
    @niveditaprity 4 роки тому

    I wish I could get this video 5 month before. Thank you so much 😊

  • @mokshmalhotra7032
    @mokshmalhotra7032 4 роки тому +8

    thanks again for your dedication
    I have a query ....
    while iterating backward Table and if the character at that position is not equal we have to choose the max of [(i-1 , j) , (i ,j-1)] and then we go to that position....
    what if both the values are Equal???
    we can take a relevant example ---> X= " abxyzc" , Y=" abkkkc"

    • @AnikashChakraborty
      @AnikashChakraborty 4 роки тому +1

      0 0 0 0 0 0 0
      0 1 1 1 1 1 1
      0 1 2 2 2 2 2
      0 1 2 2 2 2 2
      0 1 2 2 2 2 2
      0 1 2 2 2 2 2
      0 1 2 2 2 2 3
      Here is your dp matrix, and answer is correct which is abc

    • @mokshmalhotra7032
      @mokshmalhotra7032 4 роки тому

      @@AnikashChakraborty thanks for your answer
      But my question was different...which has already cleared

    • @AnikashChakraborty
      @AnikashChakraborty 4 роки тому +2

      @@mokshmalhotra7032 I think I got the question and from the dp matrix you can see than after 3 you go to the upper left element and then keep on traversing till left or up (depends which condition is former) and then traverses till up or left(whichever condition is later) till it finds an equal element. Cool!

    • @mokshmalhotra7032
      @mokshmalhotra7032 4 роки тому

      @@AnikashChakraborty ya...right
      I was confused at the first time...but then i tried to go in one direction and got the answer
      Btw ..thanks for reply ^_^

  • @coolnikrox92
    @coolnikrox92 4 роки тому +9

    Nice Video Bhai. Just a minor suggestion which wont make much of a difference but the reverse part for getting the LCS isn't required. If we know the length of the sequence, we can just create a char array of length = lcs and start from the rightmost end/index of the char array and copy the characters which match accordingly. You are doing a wonderful job Bhai :) Cheers.

    • @kumarivandana1554
      @kumarivandana1554 3 роки тому

      You can still make it better by writing in this way ans = a[i-1] + ans; where ans is the string to be returned.

    • @dragonoid296
      @dragonoid296 2 роки тому +1

      @@kumarivandana1554 not as optimized because appending in the front takes O(n)

  • @ayushbhalani7242
    @ayushbhalani7242 3 роки тому +1

    sir, you have explained the concept very well.
    but suppose we are given the strings as,
    s1= BQPQBPQ
    s2 = QPPBQ
    then there will be two longest common subsequences possible.
    first is QPBQ
    second is QPPQ
    (both are valid )
    how can we get both the strings as an output?

  • @soniamalik4929
    @soniamalik4929 3 роки тому

    Aditya apke channel pr baat baat pr ad aa jati hai.Rest,the best vedios ever.

  • @prakashgatiyala9869
    @prakashgatiyala9869 2 роки тому +3

    This video is repeating trice. Don't be scared of it. Watch till 26:47

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

    If you do not want to traverse at the end, this is also a possible implementation:
    string printLongestCommonSubsequence(string text1, string text2) {
    int m = text1.length();
    int n = text2.length();
    vector t(m+1, vector(n+1,""));
    for(int i=1; i

  • @HarshKumar-wx3nz
    @HarshKumar-wx3nz 9 місяців тому

    Amazing explanation

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

    thankyou so much sir

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

    We can also just append equal characters to a string while doing LCS , no need of the extra calculation in the end .
    I'm a fan tho

  • @NeymarJr-nu6uo
    @NeymarJr-nu6uo 2 роки тому +1

    Bro why creating table at once and printing string again during storing values into memory itself we can print our string
    if(a[i-1]==B[j-1]
    (cout

  • @theexplanation3998
    @theexplanation3998 3 роки тому

    Garda ,,aditya bhai,,

  • @Shorts_n_Laughs
    @Shorts_n_Laughs 2 роки тому

    why we are doing push back then reverse? we can initially take a empty string and can add each element which we are getting in front.... S= ""+a[i-1]+S;

  • @divyanshukoshta2443
    @divyanshukoshta2443 3 роки тому

    bawa dp m attitude ho toh tere thnx dude god bless uh

  • @abhinavkumar848
    @abhinavkumar848 3 роки тому

    videos me recursion code run kara diya h Aditya sir ne ;p
    Best DP course though, itne ache se I don't think koi bhi samjhata hoga,.

  • @PriyankaYadav-ks5fe
    @PriyankaYadav-ks5fe 3 роки тому

    Great explanation sir 👌👌