No one explains solutions better than you, thank you so much for these videos, they are helping me a lot in the process of getting ready for technical interviews!
you can add a check for prefix length ==0 at the end of the while loop. Incase nothing matches with the 2nd string then no need to check with rest of the list. And instead of substringing every itteration you can keep track of right index and only substring when returning the result.
I think it would be great if you would show 2 solutions. One with a slow run time and then the optimal solution such as this. It really helps to understand it even more. Either way awesome video
IN PYTHON s=["flow","flew","flower"] k=s[0] flag=0 a="" for x in range(len(k)): for j in s[1:]: if k[x]!=j[x]: flag=1 else: a=""+k[x] if flag==1: break else: print(a,end="")
Nice one. We can have a case inside for loop to break it when prefix length reaches zero to avoid continuing to loop when there's no scope of common prefix further.
such a clear approach! everytime i do leetcode and feel like wtf about a question ,i come here to watch your tutorial and i understand the solution so clearly! thanks a lot,u have a great help dude!
what a solution man thanks alot nick brother please continue making these videos. u r just different when it comes to explaining in most optimised ways.
I thought of using 1st string in array of string as base and scanned through all others and checked if one by one it matches all other strings if it is then we increment the string and hence getting final lcp ans
the only thing I don't understand is why we can set the first element as the prefix initially... isn't it possible that there is a different longest prefix? ex/ ["ab", "cd", "cde", "cdef","cdefg"], where if we set the prefix to "ab" wouldn't your solution return "" ?
probably very late but although the problem doesn't mention it specifically,longest common means that the common prefix must be common for all the elements in the array,so yes,"" would be returned and it would be correct,you can test it yourself inputting your string own string in the Testcase section(In the console) and seeing the expected resulted (from a working code) and your result (from your code)
i am solving in eclipse . i have the problem statement. can i share you that problem statement. i dont know the approach how to solve such problem, i am the beginner. also i am unaware of the concept like heap. please do the video on it
@@NickWhite What if all the elements in the string are same like all flowers than no deletion and the time complexity would be O(n^2)? I think we would have to use trie or suffix array to get O(n)?
No, it wouldn't because the inner loop will not depend on the length of input array. Input array could have 100 words but each word can't be longer than 20 characters, on average 5-10.
Can anyone tell me why do we set the first string as a prefix ? how do we know it is the longest string and the one that has all the letters that we want ? what if the array was like strs = [ "flight", "flower", "flow"]
when program runs it finds common between flight and flower first the common is fl and 2nd iteration it will find common between fl and flow so our aim is to find common in strings so what is there in 1st will be in all the strings if not it returns empty string
No one explains solutions better than you, thank you so much for these videos, they are helping me a lot in the process of getting ready for technical interviews!
thanks
Its insane how short this video is but you explained it better than all the long fancy videos. Thank you
you can add a check for prefix length ==0 at the end of the while loop. Incase nothing matches with the 2nd string then no need to check with rest of the list. And instead of substringing every itteration you can keep track of right index and only substring when returning the result.
I think it would be great if you would show 2 solutions. One with a slow run time and then the optimal solution such as this. It really helps to understand it even more. Either way awesome video
Above logic takes more time i think
Damn man that explanation was so smooth
IN PYTHON
s=["flow","flew","flower"]
k=s[0]
flag=0
a=""
for x in range(len(k)):
for j in s[1:]:
if k[x]!=j[x]:
flag=1
else:
a=""+k[x]
if flag==1:
break
else:
print(a,end="")
Dude, I am probably much older than you, but goddamn I am LOVING your explanations. Getting a chance to prep my interviews very efficiently!
Nice one. We can have a case inside for loop to break it when prefix length reaches zero to avoid continuing to loop when there's no scope of common prefix further.
bro your explaining method is quite creative , out of 7 videos based on this that I'd WATCHED , this was the best!
It was so nicely explained.
Thanks a lot!
When I search up a leetcode question I always go to Nick White if its available 😂 Great video
such a clear approach! everytime i do leetcode and feel like wtf about a question ,i come here to watch your tutorial and i understand the solution so clearly! thanks a lot,u have a great help dude!
are you a better problem solver by now?
what a solution man thanks alot nick brother please continue making these videos.
u r just different when it comes to explaining in most optimised ways.
Since indexOf is linear time complexity, Doesnt it make this O(n2) time complexity?
Hands best step by step explanation.
Great explanation Nick!! Kudos to you.
You know what, you just explained in a so easier way that no one has explained yet.
got through 3 different videos for a good solution but nick is one who always gives the best approach , Appreciate bro
What a clean and simple approach
best explaination for this problem on youtube
Why i didnt find your channel until now. Your explaination is crisp clear and very simple thankyou :)
but this is incorrect in the case of : "abower","flower","flightwer" the result should be "wer" but the result is empty.
Bro prefix means starting of the letter
indexOf() takes O(N) time . How is your method linear?
Wow man. I could have never thought of approaching this problem this way. Thanks a ton👍
Exactly man. What should we do to get into thinking like these aproaches ?
I thought of using 1st string in array of string as base and scanned through all others and checked if one by one it matches all other strings if it is then we increment the string and hence getting final lcp ans
Best solution for this problem . Great approach and clear explanation Thanks !!!
yo but what if the first element in the "fl" prefix array is something like "dog" or something?
You wrapped that up very smoothly. Thanks Nick🙂.
the only thing I don't understand is why we can set the first element as the prefix initially... isn't it possible that there is a different longest prefix? ex/ ["ab", "cd", "cde", "cdef","cdefg"], where if we set the prefix to "ab" wouldn't your solution return "" ?
probably very late but although the problem doesn't mention it specifically,longest common means that the common prefix must be common for all the elements in the array,so yes,"" would be returned and it would be correct,you can test it yourself inputting your string own string in the Testcase section(In the console) and seeing the expected resulted (from a working code) and your result (from your code)
thanks, tried many things for c# but kept falling out of bounds. This works and simple to understand
Thank you so much for great explanation!!! Helped so much!
Thanks for the explanation. I still don't really understand how your while loop works but I'll keep working to understand.
by watching this video i subscribed ur channel
best explanation, you explained clearly kudos
Why do we need substring method we can check character by character vertically? Wouldn't that me more optimal?
So can what can be the overall time complexity for this
You explained it very nicely. Thank you so much
Could you explain why the time complexity is O(S), where S is the sum of all characters in all strings?
what is the time complexity ?
hello....please do the problem on the merging k- sorted array using heap.
send me a link in discord and i'll check it out
i am solving in eclipse . i have the problem statement. can i share you that problem statement. i dont know the approach how to solve such problem, i am the beginner. also i am unaware of the concept like heap. please do the video on it
very clear! Thx man
Man! your explanation is just fire 🔥🔥🔥
Kudos to such a clean explanation ! Thank you.
Great explanation! Thx a lot!!
Time complexity of indexOf is O(n) though.
the time complexity is? O(n^2)
Nope because we're not looping through the strs array in the inner loop we're popping characters off of one string
@@NickWhite What if all the elements in the string are same like all flowers than no deletion and the time complexity would be O(n^2)? I think we would have to use trie or suffix array to get O(n)?
@@suryaakella4508 it will be still O(NM) where M is the length of the longest string in the array
@@i_deepeshmeena Indeed, time complexity is O(MN) and space complexity is O(M).
Time complexity with a Trie (prefix tree) would be O(M log N) where M is the length of the longest string and N the number of strings, right?
I think in place of “indexOf” .. we need to use “startswith” method… tq for the vdo
Yooo Man , I too had that same feeling
really amazing solution
Than you, well explained, was able to implement your solution in Python.
thanks for sharing such solution, very clear and easy one!
Very nice. Commenting so I get more videos.
confusion.Cleared(); THANK YOU!
Thanks for your explain!
how did you came up with this solution?
Thanks Man!
thank you for explaining!
how is a linear solution? theres is a nested while loop inside?
in worst case it is O^n2 right, is there any better solution!
Thanks for this awesome video
can you make video on Gray code (Leetcode 89)?
I’ll check it out!
If possible, please tell the time and space complexity as well ...
Best explanation 😍🥰
very clean solution.
What is the time complexity of this solution?
Thank you for this amazing explanation. What is the time complexity?
I believe it is O(A*S) where A is the iteration for each element of array, where S for the iteration of string
Still you are using While loop and one for-loop. Wouldn't this make the time complexity similar as two for-loops
No, it wouldn't because the inner loop will not depend on the length of input array. Input array could have 100 words but each word can't be longer than 20 characters, on average 5-10.
Amazing! thank you so much👍
Great explanation. Can solve this with Trie Tree ?
That's the efficient way to solve this problem
simple and on point!
Thank you so much for the explanation ut was really nice.
wow! elegant solution!
str.indexOf and str.subStr is O(m*n) i think, so I don't think it's optimal.
Yes you're correct, a.indexOf(b) is O(len(a) *len(b)) in the worst case. There is a better solution
you can eventually shift to stringbuilder i guess.
I literally got stuck to this problem and I just gave up and went to RUclips lol
Thanks man Nick... you are a pocket sized dynamite ;)
How does this not work for processing 4 that uses java ?
Best Solution 😊👍
Best solutions , Yes you did !
great.. nice and easy solution
Nice explanation
Can anyone explain me the while loop part of the code?
Really helpful!
Help me a lot, thanks
Can anyone tell me why do we set the first string as a prefix ? how do we know it is the longest string and the one that has all the letters that we want ?
what if the array was like strs = [ "flight", "flower", "flow"]
when program runs it finds common between flight and flower first the common is fl and 2nd iteration it will find common between fl and flow so our aim is to find common in strings so what is there in 1st will be in all the strings if not it returns empty string
How about setting the prefix as the smallest length string and then starting loop from index 0. For longer string array it will be beneficial?
What's the time complexity of this algorithm?
linear
You a genius
Thanks very much!
the code breaks though, with index out of bound error when there is no common prefix
Thank you, well explained, and very helpful!
thanks man!
THANKYOU SO MUCH
Nailed it!!
you are great man
thanks don
Thanks buddy
This guy is smart
thank you
you the BEST!!!!!!!!!!!!!!!!!
Simply wow
Thanks Broh
Tq