23 Printing Longest common subsequence

  Рет қаралды 241,622

Aditya Verma

Aditya Verma

Күн бұрын

Пікірлер: 735
@srana977
@srana977 4 жыл бұрын
It seems so long video, but same video is repeating again... watch till 26:47
@RathourShubham
@RathourShubham 4 жыл бұрын
he should pin this comment.
@abhishekranjansingh5348
@abhishekranjansingh5348 4 жыл бұрын
I anyone sees this message , just like it to the maximum extent so that the comment gets some importance.
@sudhanshusharma9123
@sudhanshusharma9123 4 жыл бұрын
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 4 жыл бұрын
Thanks @surinder kumar I used to skip this video for last 2 months because of its length.
@Rahulkumar-sk5yd
@Rahulkumar-sk5yd 4 жыл бұрын
@@KANHAIYAKUMAR-qi7gx lol😅. Me too
@yashveernathawat8154
@yashveernathawat8154 4 жыл бұрын
Modi Ji after meeting Aditya in Real Life :- Yeh DP wala hai kya ?????..
@TheAdityaVerma
@TheAdityaVerma 4 жыл бұрын
😂😂😂😂😂😂😂😂😂
@uttharapallysaichandra3298
@uttharapallysaichandra3298 4 жыл бұрын
😂😂😂
@hemantmangwani1006
@hemantmangwani1006 4 жыл бұрын
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 жыл бұрын
Hahaha epic, also I gave u the 100th like 😁
@mtr2936
@mtr2936 4 жыл бұрын
Aditya sir u r amazing
@ngtv5608
@ngtv5608 3 жыл бұрын
Need a playlist of GRAPHS !!
@ayushvats1808
@ayushvats1808 3 жыл бұрын
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 жыл бұрын
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.
@ultimatecreed5144
@ultimatecreed5144 2 жыл бұрын
nice bhay
@valobhediya
@valobhediya 2 жыл бұрын
@@ultimatecreed5144 *bhai
@bsmithun
@bsmithun 3 жыл бұрын
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 жыл бұрын
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 5 ай бұрын
what happen if multiple lcs exist then you approach the problem ??
@mdbahauddin1252
@mdbahauddin1252 4 жыл бұрын
Actually, this video ends at 26:51, by mistake it repeats 3 times and becomes 1:20:55
@amruthap6334
@amruthap6334 4 жыл бұрын
thank for this info
@MSCSJhabar
@MSCSJhabar 4 жыл бұрын
Thanks bro 👊
@dankyt9249
@dankyt9249 4 жыл бұрын
Aditya Verma: Interesting tha na!!!!! :) Inner me: Yeah!!!!! Veryyyyyyy Interesting :D
@TheAdityaVerma
@TheAdityaVerma 4 жыл бұрын
😅😅 Glad to know that 😅😅
@deepmodiya889
@deepmodiya889 3 жыл бұрын
@@TheAdityaVerma this question is not complete right.
@debasNnd9068
@debasNnd9068 4 жыл бұрын
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!!
@prakashgatiyala9869
@prakashgatiyala9869 2 жыл бұрын
This video is repeating trice. Don't be scared of it. Watch till 26:47
@jeBHARATHKUMAR
@jeBHARATHKUMAR 2 жыл бұрын
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..
@LaxmikantRevdikar
@LaxmikantRevdikar 3 жыл бұрын
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.
@ayushsharma-bw5ch
@ayushsharma-bw5ch 2 жыл бұрын
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 3 ай бұрын
Really thanks bhai I was also thinking the same but couldn't able to write the code correctly u helped me thanks
@aanjneytewari1554
@aanjneytewari1554 4 жыл бұрын
I don't think i've seen better explanations, when it comes to dynamic programming. Sir, you are a life saver!
@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
@DharmicYoddha
@DharmicYoddha 4 жыл бұрын
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 жыл бұрын
I got scared seeing the length of the video as 1 hr 20 mins.
@lordbaggot
@lordbaggot 4 жыл бұрын
same dude, I left it for 2 days, thinking it was too big :(
@saurabhmarpadge7498
@saurabhmarpadge7498 4 жыл бұрын
@@lordbaggot same thing happend here too
@ShivamSingh-vh1xz
@ShivamSingh-vh1xz 4 жыл бұрын
@@lordbaggot same here 😂😂
@saebalam2498
@saebalam2498 4 жыл бұрын
@@indranilthakur3605 same .....haha
@subhadeephalder1480
@subhadeephalder1480 4 жыл бұрын
Awesome videos. Ground concepts explained so vividly. Will be glad if videos on graphs are made.
@Adityakumar-nj6pk
@Adityakumar-nj6pk 4 жыл бұрын
Ur channel is best channel for placements preparation
@TheAdityaVerma
@TheAdityaVerma 4 жыл бұрын
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 жыл бұрын
placement hua ?
@AdityaMandil
@AdityaMandil 4 жыл бұрын
Bro make a playlists for greedy Algorithms !!
@KumarAcademy
@KumarAcademy 4 жыл бұрын
Yess atleast 15 questions
@raghavendraachyuthk9548
@raghavendraachyuthk9548 4 жыл бұрын
Yes
@manikantareddy7595
@manikantareddy7595 4 жыл бұрын
Yes
@adarsh6359
@adarsh6359 5 ай бұрын
Yes
@ajaynikalje3857
@ajaynikalje3857 2 ай бұрын
You are helping me for DSA prep. Thanks. Another solution for this problem.
@ayushthakur733
@ayushthakur733 3 жыл бұрын
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
@prakhartiwari4916
@prakhartiwari4916 3 жыл бұрын
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
@jayshree7574
@jayshree7574 4 жыл бұрын
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 жыл бұрын
for graph you can prefer Tech Dose KZbin Channel. He is too good.
@ayaztanzeem2475
@ayaztanzeem2475 4 жыл бұрын
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 жыл бұрын
IK, but unfortunately it cant be fixed now 😕
@TheAdityaVerma
@TheAdityaVerma 4 жыл бұрын
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 жыл бұрын
@@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
@bigfan9268
@bigfan9268 2 жыл бұрын
// 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 2 жыл бұрын
bro, can you provide the link gfg ,leetcode
@pinkkitty6553
@pinkkitty6553 Жыл бұрын
how to get all the lcs ?
@okeyD90232
@okeyD90232 3 жыл бұрын
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.
@deepinderjeetsingh8356
@deepinderjeetsingh8356 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.
@soniamalik4929
@soniamalik4929 3 жыл бұрын
DP requires so much effort to understand but once understood you will be the person with much powerful brain.
@tanmaysahare2353
@tanmaysahare2353 3 жыл бұрын
Bhai bht hi jabardast padhate ho aap ek ek concept clear ho gai thanku so much it really helped it
@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...
@dhruvbhati1347
@dhruvbhati1347 Жыл бұрын
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 🙏❤
@shashankjain4676
@shashankjain4676 4 жыл бұрын
One of the best tutorials on KZbin for DP. God bless you. Please add playlist on Greedy algorithm, backtracking and Graphs if possible. Thx a ton
@thinkingmad1685
@thinkingmad1685 3 жыл бұрын
Hey can u help me regarding backtracking greedy any yt channel?
@kodeHubb
@kodeHubb 2 жыл бұрын
Bhai dil se sukriya padhaane k liye. ❤
@prashantiiitd2705
@prashantiiitd2705 2 жыл бұрын
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.
@prajwalr6849
@prajwalr6849 3 жыл бұрын
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.
@surabhisingh9956
@surabhisingh9956 4 жыл бұрын
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 😊
@akashtyagi7182
@akashtyagi7182 4 жыл бұрын
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.
@priyanshnigam5974
@priyanshnigam5974 4 жыл бұрын
are you sure that it will work?
@Rahulkumar-sk5yd
@Rahulkumar-sk5yd 4 жыл бұрын
Ya I also think so.
@democrats9579
@democrats9579 3 жыл бұрын
This is good too.
@aaryapathania4109
@aaryapathania4109 2 жыл бұрын
It wont work in all the cases Eg: "MZJAWXU" & "XMJYAUZ" Expected output : "MJAU" Output using this method: "MZAU"
@aniketraj_0520
@aniketraj_0520 2 жыл бұрын
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
@thematrix_03
@thematrix_03 Жыл бұрын
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
@cripz4203
@cripz4203 4 жыл бұрын
Can't we do this push operation when making the dp? in the if condition?
@lucygaming9726
@lucygaming9726 3 жыл бұрын
I was thinking the same thing. Like that is very obvious, but is it correct?
@pranaypb8158
@pranaypb8158 3 жыл бұрын
Here is the code for it string lcs_tabulation(string x, string y, int n, int m, std::vector &dp){ rep(i,0,n+1){ rep(j,0,m+1){ if(i==0 || j==0){ dp[i][j] = ""; } } } rep(i,1,n+1){ rep(j,1,m+1){ if(x[i-1] == y[j-1]){ dp[i][j] = (dp[i-1][j-1] + x[i-1]); } else{ dp[i][j] = ( sz(dp[i-1][j])>sz(dp[i][j-1]) ? dp[i-1][j] : dp[i][j-1]); } } } return dp[n][m]; }
@mickyman753
@mickyman753 3 жыл бұрын
@@pranaypb8158 did this worked on geeks for geeks problem link
@shreyasaxena5169
@shreyasaxena5169 3 жыл бұрын
@@mickyman753 do you have print lcs print problem link?
@mickyman753
@mickyman753 3 жыл бұрын
@@shreyasaxena5169 problem link will be always in the video's description ,kzbin.info?event=video_description&redir_token=QUFFLUhqa0l0SGNFMVUxaTd4dFF6LXVzUk1TZ0dESThJZ3xBQ3Jtc0tseWtjMkttUG1EX216dlNYTDk1SDdQZ1V6UHJBM0dRbWJtaFoyRUV4ZVFSek1BYldZWDh1VS1MUExyNm5LWEYzNkY5NjdNM01wOFJKczdtWkdlc1ZpRGNMdnZmdkJEX0libDRuUzBKTTZOWHJpZHoyaw&q=https%3A%2F%2Fwww.geeksforgeeks.org%2Fprinting-longest-common-subsequence%2F
@AlinaMirzaCS-
@AlinaMirzaCS- 3 жыл бұрын
i just saw 19 min and got the code...really great playlist ..
@sgupta2512
@sgupta2512 8 ай бұрын
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]
@cleweric
@cleweric Жыл бұрын
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 Жыл бұрын
Did u use memoization? Because of initialising full table with " "
@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....
@shifalitayal3332
@shifalitayal3332 4 жыл бұрын
u are really a great mentor....plz make playlist on graph too...
@ChandraShekhar-by3cd
@ChandraShekhar-by3cd 4 жыл бұрын
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
@mrsukki8158
@mrsukki8158 4 жыл бұрын
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
@ishaankulkarni49
@ishaankulkarni49 3 жыл бұрын
please dont stop making videos!! this playlist is genius!
@siddhantjain1546
@siddhantjain1546 8 ай бұрын
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
@srushtipawar7738
@srushtipawar7738 4 жыл бұрын
Best videos on dynamic programming so far.Please make videos on trees/graphs questions or important questions from leetcode and other coding platforms.
@vaibhavkumar267
@vaibhavkumar267 4 жыл бұрын
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 жыл бұрын
@@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
@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.
@paruldhariwal
@paruldhariwal 4 ай бұрын
best playlist I have followed till date!
@awesomeps10
@awesomeps10 4 жыл бұрын
You are god's gift to those who don't want to go/pay for coding institutes 🤠 Thanks for making this legendary dp playlist 😎♥️🎯
@_PAYALGAIKWAD
@_PAYALGAIKWAD 2 жыл бұрын
best dp course on the internet
@srinathchembolu7691
@srinathchembolu7691 11 ай бұрын
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; }
@ankitshaw5375
@ankitshaw5375 8 ай бұрын
Thank you man
@prabhatpandey1638
@prabhatpandey1638 4 жыл бұрын
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 :)
@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
@siddhantjaiswal5999
@siddhantjaiswal5999 4 жыл бұрын
I was just scared because of the length of the video, the Way explains is incredible 👍 ❤ lots of Love from ITER,BBSR
@Vendettaaaa666
@Vendettaaaa666 4 жыл бұрын
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.
@liveinspirationallife
@liveinspirationallife 3 жыл бұрын
bhai ji kamaal ho tusi...aar paar ki DP smjare ho
@mokshmalhotra7032
@mokshmalhotra7032 4 жыл бұрын
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 жыл бұрын
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 жыл бұрын
@@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 ^_^
@shradhagupta8897
@shradhagupta8897 3 жыл бұрын
Aditya Verma you are freaking awesome..
@myqalb123
@myqalb123 4 жыл бұрын
Itnaaaaaaaa explained video...WOW thank you bhaiyya for all your efforts.
@coderscode5364
@coderscode5364 4 жыл бұрын
segment tree and two pointer technique par video bnao......please aur aapki series superb hai ...it's really amazing
@sarcastic_army
@sarcastic_army 2 ай бұрын
Bessssst Playlist ever on DP!!!!!!!!!!!!!!!
@soniamalik4929
@soniamalik4929 3 жыл бұрын
Aditya apke channel pr baat baat pr ad aa jati hai.Rest,the best vedios ever.
@devanshmesson2777
@devanshmesson2777 3 жыл бұрын
Thank you so much!! Best video on youtube for DP!!
@AJ-gg1jc
@AJ-gg1jc 4 жыл бұрын
we can use s.insert(s.begin(),a[i]) =>>>in case we use s as vector of characters..... and s = a[i] + s =>>> in case we use s as string..... Both will directly give reversed or accurate string or vector of chars in result....
@ichigo138
@ichigo138 3 жыл бұрын
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
@anandshukla790
@anandshukla790 3 жыл бұрын
or simply store in stack and print the stack
@motormaza_riders
@motormaza_riders 3 жыл бұрын
will this work fine?
@samirpaul2
@samirpaul2 3 жыл бұрын
@@motormaza_riders ??
@mridulkumar786
@mridulkumar786 4 жыл бұрын
Before watching your videos* Dp is out of my syllabus. After watching your video* I can teach dp now 😅
@rishavkumar2182
@rishavkumar2182 4 жыл бұрын
Excellent videos...loved it
@divyasimhadri4677
@divyasimhadri4677 11 ай бұрын
Thank you so much for these videos .
@DeepakKumar-yc9hr
@DeepakKumar-yc9hr 4 жыл бұрын
Love YOu Bro , Really Your Video is God Level
@sagarsondur618
@sagarsondur618 3 жыл бұрын
the video is being repeated!! but the solution is explained perfectly
@samirrobin3524
@samirrobin3524 2 жыл бұрын
What an amazing playlist!! Thank you so much Aditya bhaiya❤️❤️
@mrditkovich2339
@mrditkovich2339 3 жыл бұрын
have 1 month to prepare for google.. this series is proving very useful !
@akarsh1821
@akarsh1821 Жыл бұрын
How did it go? What did they ask and you prepared for which role?
@mandeep2192
@mandeep2192 4 жыл бұрын
now kind of feeling some confident in DP. thnx to u bro... Brilliant efforts..
@raghavramola7012
@raghavramola7012 4 жыл бұрын
at 23:31 , i should be equal to n and j = m becz matrix is n*m and by t[i][j] if i=m,j=n it means we are accessing t[m][n] which may not be allocated memory
@sushruths1786
@sushruths1786 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.
@lovleshbhatt7797
@lovleshbhatt7797 4 жыл бұрын
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 KZbinRS 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 жыл бұрын
Thanks brother, btw this video got repeated 3 times (editing error), just watch the first 30 minutes or so.
@saranghae3720
@saranghae3720 3 жыл бұрын
@@TheAdityaVerma thanks a lot bhaiya, for ur existence... : )
@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,.
@navneetsaraf9996
@navneetsaraf9996 3 жыл бұрын
Ooo guru chaaah gyee....Ek dum chapp gya dimag mein..DP😄😁
@_ChetanaNagare
@_ChetanaNagare 2 жыл бұрын
23:48 here in else block, if t[i][j-1] == t[i-1][j], it will automatically select i-- right? But we can also choose j--. So selecting i-- by default gives a string in output which is different than if we would select j--.
@pinkkitty6553
@pinkkitty6553 Жыл бұрын
Bhai solution mila ?
@jayantmittal6665
@jayantmittal6665 3 жыл бұрын
bhai awesome ho tum bhagwan bhala kre apka
@AJ-gg1jc
@AJ-gg1jc 4 жыл бұрын
thanks sir..... it is looping 3 times: 26:47 finished
@oqant0424
@oqant0424 3 жыл бұрын
hats off to your efforts!
@saurabhraj5411
@saurabhraj5411 3 жыл бұрын
oh bhai ye kya dekhliya , pura intuition hi clear hogya ek baar m F !
@AR-nw6dv
@AR-nw6dv 2 жыл бұрын
This video is amazing ...i was littrelyy afraid , how i will solve this qusn i solve this qusn using two loop ,😂😂...but now i can solve this qusn using loop and recursion memorization and dp and using algorithm... 😎
@cs208anjaysahoo2
@cs208anjaysahoo2 4 жыл бұрын
We can just make use of the earlier concept and change the dp array datatype to String and append the longest subsequence .Below is my code :- class Solution { public String longestCommonSubsequence(String text1, String text2) { int n=text1.length(); int m=text2.length(); String dp[][]=new String[n+1][m+1]; for(int i=0;i
@sandeepjoshi8845
@sandeepjoshi8845 3 жыл бұрын
great technique...👍
@vladimirputin2756
@vladimirputin2756 Жыл бұрын
public class printLCS { public static void main(String[] args) { String s1 = "abdefjs"; String s2 = "xadfsx"; int n = s1.length(); int m = s2.length(); // Create a 2D DP (Dynamic Programming) table with dimensions (n+1) x (m+1) int[][] dp = new int[n + 1][m + 1]; // Initialize the DP table with zeros for (int i = 0; i < n + 1; i++) { for (int j = 0; j < m + 1; j++) { if (i == 0 || j == 0) dp[i][j] = 0; // Base case: If either string is empty, LCS is 0. } } // Fill in the DP table using a top-down approach for (int i = 1; i < n + 1; i++) { for (int j = 1; j < m + 1; j++) { if (s1.charAt(i - 1) == s2.charAt(j - 1)) { // If the current characters match, add 1 to the previous LCS length. dp[i][j] = 1 + dp[i - 1][j - 1]; } else { // If the current characters do not match, take the maximum of the LCS // when one character from either string is excluded. dp[i][j] = Math.max(dp[i - 1][j], dp[i][j - 1]); } } } int i = n; int j = m; String s = ""; // Backtrack to construct the LCS string while (i > 0 && j > 0) { if (s1.charAt(i - 1) == s2.charAt(j - 1)) { s += s1.charAt(i - 1); i--; j--; } else { if (dp[i - 1][j] > dp[i][j - 1]) i--; else j--; } } // Reverse the LCS string to get the correct order String ans = ""; for (char ch : s.toCharArray()) { ans = ch + ans; } // Print the Longest Common Subsequence System.out.println(ans); } }
@parvahuja7618
@parvahuja7618 7 ай бұрын
would really like a playlist on graphs but its fine whenever you get time please make one thankyou
@priyarathore9266
@priyarathore9266 3 жыл бұрын
Best DP course on internet!
@69upasonabiswas88
@69upasonabiswas88 3 жыл бұрын
god of DP. Thank you sir for making our life easier.. :)
@nileshraghuvansi4172
@nileshraghuvansi4172 3 жыл бұрын
We can also add the matching letter to our output string when a[i-1]==b[i-1] in that we don't have to write this extra code.
@tanutoks9360
@tanutoks9360 2 жыл бұрын
I was thinking the same. Does that work?
@WorkAlerts
@WorkAlerts 3 ай бұрын
Hi All, To print the "Longest Common SUBSTRING" between the 2 strings please see below solution (Like if my approach worked for you) --> //First step should be to create the t[i][j] array containing the length of the Longest Common Substring. Please dry run the code once for String A = "ABCDFH" and B = "ACDGHF" and then you'll understand why I've added while inside while and j==0 conditions (basically tried to cover all the edge cases) StringBuilder res = new StringBuilder(); int i=n,j=m; while(i>0 && j>0){ if(str1.charAt(i-1) == str2.charAt(j-1)){ if(dp[i][j] > 1 && dp[i][j] > res.length()){ /*Since it may be possible that we've already stored a smaller length string in the result string so we just set it's length to zero and then keep on adding it in the result string till the length doesn't becomes zero*/ res.setLength(0); while(dp[i][j] > 0){ res.append(str1.charAt(i-1)); i--; j--; } } else{ /*Now if the two strings just contains a subsequence then simply store the first matching character of it into the result string if it's not empty otherwise ignore it and MOVE ON!! if(res.isEmpty()){ res.append(str1.charAt(i-1)); } j--; if(j==0){ i--; j=m; } } } else{ /*Basically we're just making sure if dp[i][j] is 0 or not(which it will be definitely) so we simply decrease the column(j) but before proceeding we need to make sure that if j has reached zero so we decrease the value of i and reset the j to m (It's basically opposite to the for loop condition of j=0; j
@sumitchugh4624
@sumitchugh4624 3 ай бұрын
This is exactly what I was looking for. I had spent hours on this problem before finally giving up since printing Substring is way more trickier than Subsequence because we can have multiple Substrings as well in the output. Your code is working for me.
@shubhamshastri5162
@shubhamshastri5162 3 жыл бұрын
do same as LCS and also add these steps we can also store the index of anyone string (of which ith character is same as jth character of 2nd string)in a set, set because we get sorted index and only one occurance and then just print the particular index(which is in set) of the particular string .
@divyanshukoshta2443
@divyanshukoshta2443 3 жыл бұрын
bawa dp m attitude ho toh tere thnx dude god bless uh
@fullstop9544
@fullstop9544 2 жыл бұрын
If we traverse along the last row : If value of cell increases along the row then pick that alphabet Else just go to next cell Or traverse along the last column and do similar as above
@pritishsaha7647
@pritishsaha7647 4 жыл бұрын
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
@debugagrawal
@debugagrawal 2 жыл бұрын
Better approach is storing string itself in dp of string, string c[n+1][m+1]; initialize with blank for n==m==0 then just do if( t1 [ i - 1 ] == t2 [ j - 1 ]) { c[ i ][ j ] = c[ i - 1] [ j - 1 ] + t1[ i - 1 ]; } else { c[ i ] [ j ] = c[ i - 1 ] [ j ].length() > c[ i ] [ j - 1 ].length() ? c [ i - 1 ][ j ] : c[ i ] [ j - 1 ]; } cout
@debugagrawal
@debugagrawal 2 жыл бұрын
Done without watching the video, fundas got strong due to all previous questions, thhenks
24 Shortest Common SuperSequence
22:59
Aditya Verma
Рет қаралды 201 М.
29  Print shortest common Supersequence
23:09
Aditya Verma
Рет қаралды 173 М.
Beat Ronaldo, Win $1,000,000
22:45
MrBeast
Рет қаралды 158 МЛН
So Cute 🥰 who is better?
00:15
dednahype
Рет қаралды 19 МЛН
She made herself an ear of corn from his marmalade candies🌽🌽🌽
00:38
Valja & Maxim Family
Рет қаралды 18 МЛН
Try this prank with your friends 😂 @karina-kola
00:18
Andrey Grechka
Рет қаралды 9 МЛН
19  Longest common subsequence Recursive
27:42
Aditya Verma
Рет қаралды 297 М.
DP 26. Print Longest Common Subsequence | Dp on Strings
16:55
take U forward
Рет қаралды 212 М.
Longest Common Subsequence- Dynamic Programming | Data structures and algorithms
25:47
20  Longest common subsequence Memoization
31:19
Aditya Verma
Рет қаралды 196 М.
36  Palindrome Partitioning Recursive
26:35
Aditya Verma
Рет қаралды 199 М.
39  Evaluate Expression to True  Boolean Parenthesization Recursive
40:00
21  Longest common subsequence Top down DP
25:35
Aditya Verma
Рет қаралды 196 М.
Longest Common Substring Dynamic Programming
27:22
Pepcoding
Рет қаралды 28 М.
Beat Ronaldo, Win $1,000,000
22:45
MrBeast
Рет қаралды 158 МЛН