DP 45. Longest String Chain | Longest Increasing Subsequence | LIS

Sdílet
Vložit
  • čas přidán 7. 04. 2022
  • Lecture Notes/C++/Java Codes: takeuforward.org/dynamic-prog...
    Problem Link: bit.ly/3KHsl9J
    Please watch the video at 1.25x for a better experience.
    Pre-req for this Series: • Re 1. Introduction to ...
    a
    Make sure to join our telegram group for discussions: linktr.ee/takeUforward
    Full Playlist: • Striver's Dynamic Prog...
    In this video, we solve the Longest String Chain, prior to this please solve dp 41 and dp 42.
    If you have not yet checked our SDE sheet, you should definitely do it: takeuforward.org/interviews/s...
    You can also get in touch with me at my social handles: linktr.ee/takeUforward

Komentáře • 242

  • @JayPatel-sn7it
    @JayPatel-sn7it Před 11 měsíci +2

    What an amazing thought process. I haven't seen anywhere yet.

  • @cinime
    @cinime Před rokem +2

    Understood! Thank you veeeeeery much as always!!

  • @stith_pragya
    @stith_pragya Před 6 měsíci +1

    UNDERSTOOD.........Thank You So Much for this_wonderful video.........🙏🏻🙏🏻🙏🏻🙏🏻🙏🏻🙏🏻

  • @ToonTorque
    @ToonTorque Před rokem +11

    In case anyone is struggling with the java code here it is
    here i have did this one on leetcode and its working as the maxi is returning the length of the array so i started it from 0 and added 1 in the end for the correct length
    static int lSC(String[] arr){
    Arrays.sort(arr, Comparator.comparingInt(String::length));
    int n = arr.length;
    int[] dp = new int[n];
    int maxi = 0;
    for (int i = 0; i < n; i++) {
    for (int j = 0; j < i; j++) {
    if (checkPossible(arr[i], arr[j]) && 1 + dp[j] > dp[i]){
    dp[i] = 1+ dp[j];
    }
    }
    if (dp[i] > maxi){
    maxi = dp[i];
    }
    }
    return maxi + 1;
    }
    private static boolean checkPossible(String s, String s1) {
    if (s.length() != s1.length()+1){
    return false;
    }
    int first = 0;
    int second = 0;
    while (first < s.length()){
    if (second < s1.length() && s.charAt(first) == s1.charAt(second)){
    first++;
    second++;
    }
    else {
    first++;
    }
    }
    if (first == s.length() && second == s1.length()){
    return true;
    }
    else return false;
    }

    • @saarimkhan557
      @saarimkhan557 Před rokem

      but why you have not filled dp array with 1 and do the standarad lis ? why it giving error?

  • @satyamgupta1446
    @satyamgupta1446 Před rokem +34

    you can also check the both Strings by using lcs and if len(lcs) == smaller string then it is true else false.
    class Solution {
    public boolean isValid(String s,String t)
    {
    int n=s.length();
    int m= t.length();
    if(n-m!=1) return false;
    int[][] dp=new int[n+1][m+1];
    for(int i=1;i

    • @ayushgupta80
      @ayushgupta80 Před 11 měsíci +1

      this will give tle

    • @harshitchopra1551
      @harshitchopra1551 Před 8 měsíci +1

      This solution will have more TC and SC

    • @mohaimenchowdhury
      @mohaimenchowdhury Před 4 měsíci

      @@ayushgupta80 This will not get TLE for this particular problem as maximum size of the words[I] is 16. it will have larger TC = O(16*16*N*N) and also SC of an additional O(N*M)

    • @Invincible2203
      @Invincible2203 Před měsícem

      @@mohaimenchowdhury its giving tle on LC though.

    • @priyanshkumariitd
      @priyanshkumariitd Před 21 hodinou

      Great observation bro

  • @ritikshandilya7075
    @ritikshandilya7075 Před 2 dny

    keeping the idea simple and building up the solution is a rare art only our Savior Striver possesses . Thankyou for amazing solution Striver

  • @DevashishJose
    @DevashishJose Před 5 měsíci

    Thank you , understood.

  • @rishabhagarwal8049
    @rishabhagarwal8049 Před rokem

    Understood Sir, Thank you very much

  • @ratinderpalsingh5909
    @ratinderpalsingh5909 Před 11 měsíci

    Understood, sir. Thank you very much.

  • @Swiftie13498
    @Swiftie13498 Před 3 měsíci

    We love you striver!!!

  • @ujjalsaha428
    @ujjalsaha428 Před 2 lety +10

    As always "understood" ❤️

  • @aaravarya4406
    @aaravarya4406 Před 2 lety +29

    Bro make some videos on game theory, it's highly needed!! Couldn't find any better content on yt.

    • @KomalPal
      @KomalPal Před 2 lety +8

      I have made few game theory videos, you could check them also, I hope that would help for time being , but would love to see videos by striver :)

  • @UECAshutoshKumar
    @UECAshutoshKumar Před 14 dny +1

    Thank you
    Understood!

  • @ashwanisharma8903
    @ashwanisharma8903 Před 2 lety

    Understood. Amazing !

  • @Thescienceworld652
    @Thescienceworld652 Před 9 měsíci +3

    Now , i feel so much confidance . i applied same exact code and i came just to see your stretegy. 😃

  • @sameersahu4569
    @sameersahu4569 Před 2 lety

    Understood!!!Thank you

  • @dennyage4791
    @dennyage4791 Před 2 lety +17

    Checkboolean() function will throw out of index error when S1: abcd , S2: abc

    • @mrepic2797
      @mrepic2797 Před 2 lety +4

      we can add if(second==s2.size()) return true; ,in the while loop

    • @tusharsahu397
      @tusharsahu397 Před rokem +1

      if (i == n or i == n-1) and j == m:
      return True
      return False
      use above syntax

  • @tangypotato1
    @tangypotato1 Před 2 lety +2

    i am getting tle with recursive dp on last test case .. can it be done with recursive dp?

  • @manasgupta4393
    @manasgupta4393 Před 2 lety +15

    in checkPossible method, add condition if(j

    • @pawanchandra9193
      @pawanchandra9193 Před rokem +1

      yep
      bool isPossible(string &s1, string &s2){
      if(s1.size()!=s2.size()+1) return false;
      int i=0,j=0;
      while(i

    • @AbhishekKumar-yv6ih
      @AbhishekKumar-yv6ih Před 4 měsíci

      It didn't fail for me, simply goes to else condition, when j breaches s2.

  • @dheerajshukla7008
    @dheerajshukla7008 Před 8 dny

    you are amazing sir

  • @rishabhgupta9846
    @rishabhgupta9846 Před rokem

    understood ,able to solve by my own

  • @sauravchandra10
    @sauravchandra10 Před rokem

    Understood, thanks!

  • @abhishek__anand__
    @abhishek__anand__ Před rokem

    Great Explanation

  • @codizzz3614
    @codizzz3614 Před měsícem

    understood!!

  • @shubhamsharma-mj7ou
    @shubhamsharma-mj7ou Před 2 lety

    Can I print subsequence only using iteration not using power set in iteration of possible can you make a video on that

  • @sanchitdeepsingh9663
    @sanchitdeepsingh9663 Před měsícem

    thanks

  • @saurabhrthakur
    @saurabhrthakur Před 2 měsíci

    Understood!

  • @anujbajpai5791
    @anujbajpai5791 Před 9 měsíci

    In checkpossible function, in not match case, shouldnt it be second++ as, s2 being the larger string

  • @studyonline3236
    @studyonline3236 Před rokem +5

    Another way of doing - using Recursion (top-down)
    No need to sort as we try out all possibilities.
    Take any word from the list ["xbc","pcxbcf","xb","cxbc","pcxbc"]
    Ex - pcxbcf
    try to generate all substrings of it by deleting one character at a time(as the predecessor is one length less than the current word) and check if it is in the given list.
    cxbcf
    pxbcf
    pcbcf
    pcxcf
    pcxbf
    pcxbc
    If the generated substrings are in the list, you can continue with the process else, go with the next substring. Repeat this process for all the words in the given list and return the max length.
    words=["xbc","pcxbcf","xb","cxbc","pcxbc"]
    seen=set(words)
    def f(s):
    if len(s)==1:
    return 1 if s in seen else 0
    ans=0
    for i in range(len(s)):
    sub=s[0:i]+s[i+1:]
    if sub in seen: ans=max(ans,f(sub))
    return 1+ans
    ans=0
    for word in words:
    ans=max(ans,f(word))
    return ans
    As you can see there are overlapping sub-problems in it --> For the substrings cxbcf and pxbcf (and others) we are calculating the results for xbcf >1 time, So you can easily memoize the solution.

  • @prabhakaran5542
    @prabhakaran5542 Před měsícem +1

    Understood ❤

  • @verma_jay
    @verma_jay Před 8 měsíci

    understood

  • @parthgujral9569
    @parthgujral9569 Před rokem

    what is the time complexity of recursion code of this question? recursion code accept on gfg.

  • @satendra6200
    @satendra6200 Před 9 měsíci +2

    in c++ your comp function should be static since sort() is static .(if code is in class)

  • @ashwinnema06
    @ashwinnema06 Před 2 lety

    Sir please also make a video on scramble string

  • @dreamyme543
    @dreamyme543 Před 6 měsíci +1

    Understood:)

  • @srinathv1412
    @srinathv1412 Před 5 měsíci

    Understood!!!!!

  • @dhairyachauhan6622
    @dhairyachauhan6622 Před rokem +1

    another complex way of solving it using recursion(c++)
    #include
    bool compare(string &s1,string &s2)
    {
    return s1.size() < s2.size();
    }
    int lcs(string &s,string &t,int idx1,int idx2){
    if(idx1 < 0 || idx2 < 0){
    return 0;
    }
    if(s[idx1] == t[idx2]){
    int pick = 1+lcs(s,t,idx1-1,idx2-1);
    return pick;
    }
    return max(lcs(s,t,idx1-1,idx2),lcs(s,t,idx1,idx2-1));
    }
    int solve(vector&arr,int idx,int n,int prev_idx){
    if(idx == n){
    return 0;
    }
    if(prev_idx == -1 || (arr[idx].length()-lcs(arr[idx],arr[prev_idx],arr[idx].length()-1,arr[prev_idx].length()-1) == 1 && arr[idx].length() == 1 + arr[prev_idx].length())){
    int pick = 1 + solve(arr,idx+1,n,idx);
    int dontpick = solve(arr,idx+1,n,prev_idx);
    return max(pick,dontpick);
    }
    return solve(arr,idx+1,n,prev_idx);
    }
    int longestStrChain(vector &arr)
    {
    sort(arr.begin(),arr.end(),compare);
    int n = arr.size();
    return solve(arr,0,n,-1);
    }

  • @studynewthings1727
    @studynewthings1727 Před 2 měsíci +1

    Understood.

  • @_hulk748
    @_hulk748 Před rokem

    understood sir🙏❤

  • @premduvvapu476
    @premduvvapu476 Před 9 měsíci

    Understood

  • @rohalkurup1350
    @rohalkurup1350 Před 2 lety

    Understood !!!!!!!!!!!!!!!!!

  • @Framedbyharsh
    @Framedbyharsh Před měsícem

    understood'

  • @amitkulkarni9682
    @amitkulkarni9682 Před 2 měsíci

    solved this without watching because of Striver !!!

  • @Harshit126
    @Harshit126 Před rokem

    Undertoor, thanks

  • @priyatamkumar518
    @priyatamkumar518 Před 2 lety

    understood!

  • @m-bk4um
    @m-bk4um Před 7 měsíci

    understand

  • @561skumar4
    @561skumar4 Před rokem

    "understood" ❤

  • @pranshu_awasthi
    @pranshu_awasthi Před 2 měsíci

    How does the comparison
    s1[first] == s2[second] work in case we overshoot second to be greater than s2.size ?
    Wouldn’t s2[second] in that case would give a segmentation fault ?

    • @aniketk2500
      @aniketk2500 Před měsícem +1

      need to one more condition in if( second < s2.size() && s1[first] == s2[second] )

  • @AmanPatel-ub7sw
    @AmanPatel-ub7sw Před rokem

    understood ❤

  • @vaishnavithakur6460
    @vaishnavithakur6460 Před 2 lety

    Understood!!!

  • @srikanthbankuru9557
    @srikanthbankuru9557 Před rokem

    understood dude:)

  • @rachurishashikanth9347

    Comparison function if s1=cbd and s2=bc it will not work ?? Can anyone explain

  • @amansamal8233
    @amansamal8233 Před 2 lety

    understood❤❤

  • @ashwanisharma8903
    @ashwanisharma8903 Před 2 lety +1

    cant find in which video you explained the LIS code you typed in the begining of this video. Please help.

  • @techie-alien4712
    @techie-alien4712 Před 2 lety +1

    hey striver! I can't find the notes for this problem on takeUforward website. is it still not updated? do we have to wait?

  • @sachitkumbhat2004
    @sachitkumbhat2004 Před 8 měsíci

    Can we do this using the binary search logic as well??
    If yes , can anyone put the code

  • @prateekapurva3464
    @prateekapurva3464 Před 23 dny

    why take and notTake approach is not working in this ?

  • @mantrarajgotecha3055
    @mantrarajgotecha3055 Před 2 lety

    Understood ❣️

  • @snehancoghosh7322
    @snehancoghosh7322 Před 2 lety +2

    Hey it would be a great help if you upload the notes and java code on your website, for these programs.

    • @vishvaschoudhary3858
      @vishvaschoudhary3858 Před rokem

      notes are there if you see in description and java code can be found in comments down below

  • @divyanshjain6489
    @divyanshjain6489 Před rokem +2

    I am getting a tle for the same code on leetcode, can anyone suggest how to resolve it .

    • @visase2036
      @visase2036 Před 4 měsíci

      Try sorting the given string based on len and break the second loop if the diff of lengths is >1
      for index in range(len(words) :
      for prevIndex in range(index-1,-1,-1) :
      lenCondition>1: break

  • @naganathanmr1489
    @naganathanmr1489 Před 3 měsíci

    Understood
    But can anyone let me know how to figure out that this question has to be solved using LIS pattern

  • @priyanshvatsal9791
    @priyanshvatsal9791 Před rokem

    Understood 😇

  • @tasneemayham974
    @tasneemayham974 Před 8 měsíci +1

    Striver, I have a question: for Time Complexity when do you know when to multiply the length by N^2 and when to just add it. In the last problem you added it, but here you multiplied it. May anyone who can help tell me the intuition here? and thx.
    Of course THANK YOU STRIVERRR. You are the best bhaiya!!

    • @aniket7512
      @aniket7512 Před 7 měsíci +1

      Anything inside nested loops (Eg. "for loop till n" and "for loop of prev" and the "checkPossible" function) are multiplied and if some block of code is outside nested loops, it's added to the complexity.
      Hence here, (first loop runs till N) * (Second loop of previous runs till N) * (checkPossible function runs till max length of the string) = (N^2) * len
      If our checkPossible function was outside these loops then it would have been added and not multiplied.
      Therefore, Multiplication is done from the outermost loop of any nested block till the interiormost loop.

    • @tasneemayham974
      @tasneemayham974 Před 7 měsíci

      ​@@aniket7512 Ohh!! What about when we have recursion or some other operations? How do we know the time complexity? Or is it just based on the loops?
      And thanks a ton for answeringg!! Much appreciated!

    • @aniket7512
      @aniket7512 Před 7 měsíci

      @@tasneemayham974 Recursion case complexity is calculated by visualising the recursion tree with the depth and the branches it goes. Try some examples on ur own with the previous videos of striver's.
      If not let me know if any doubt u have.

    • @tasneemayham974
      @tasneemayham974 Před 7 měsíci

      @@aniket7512 Ahh yes!! Actually I watched his whole series and that's the only way I calculate the TC. I just thought there was another rule for that! So, thanks for clearing that up!! You were really helpful!! BIG THANKS BRO!

  • @safiwasif2905
    @safiwasif2905 Před měsícem

    in c++ if getting error in comparator function make it :- static bool comp

  • @codingachinilgtifirbhikrrh9009

    For C++ add this condition in the compare function in the end:
    else if(j == word2.size())
    return 1;
    and also make the custom comparator function static

    • @demoaccount9224
      @demoaccount9224 Před 2 lety

      Correct if you dont declare the bool functions static it gives TLE on leetcode
      Leetcode has very tight constraints.

    • @sriramr4957
      @sriramr4957 Před 2 lety

      Can you explain how adding that else condition takes care of the case where s1=abcd and s2=abc?

    • @adarshkumar6876
      @adarshkumar6876 Před 2 lety

      // t.c - O(nlogn) + O(n^2m);
      class Solution {

      bool checkPossible(string &s1, string &s2) {

      // ith string has to be one greater than the prev
      if(s1.size() != s2.size() +1) {
      return false;
      }

      int first = 0, second = 0;
      while(first < s1.size() && second < s2.size()) {
      if(s1[first] == s2[second]) {
      first++;
      second++;
      }
      else{
      first++;
      }
      }

      if(first == s1.size() && second == s2.size()) return true;
      else if(second == s2.size()) return true;
      return false;
      }


      static bool comp(string &s1, string &s2) {
      return s1.size() < s2.size();
      }


      public:
      int longestStrChain(vector& arr) {
      int n = arr.size();

      // sort acc. to the length of string
      sort(arr.begin(), arr.end(), comp);

      for(int i=0;i

    • @Shubham-or6cs
      @Shubham-or6cs Před 2 lety +2

      class Solution {
      public:
      static bool comp(string s1, string s2){
      return s1.size()

    • @sahiljain2524
      @sahiljain2524 Před rokem +1

      @@Shubham-or6cs ["xbc","pcxbcf","xb","cxbc","pcxbc"] on this TC ?

  • @parshchoradia9909
    @parshchoradia9909 Před rokem

    Understood Sir!

  • @VikashYadav-px8ei
    @VikashYadav-px8ei Před rokem +1

    Understood 🎉

  • @saitej6472
    @saitej6472 Před 2 lety +3

    Getting Time Limit Exceeded on leetcode, any suggestions for optimization ?

    • @ShubhamKumar-ur1vm
      @ShubhamKumar-ur1vm Před 2 lety +9

      in checkPossible function , pass the two strings as reference like &str1 ,&str2

    • @ayushtyagi4240
      @ayushtyagi4240 Před 2 lety +1

      if(words[i].size() == words[j].size() +1 ) .....use this condition before compare condition

    • @shubhamkeshari906
      @shubhamkeshari906 Před rokem

      @@ShubhamKumar-ur1vm now its working lol but why???

  • @adityaraj-zm7zk
    @adityaraj-zm7zk Před 3 měsíci

    why we write s1.size() != s2.size() +1)

  • @original_gangsta_
    @original_gangsta_ Před 2 lety

    Understood💪💪💪

  • @sanjana8267
    @sanjana8267 Před 2 lety +1

    What does he mean when he says "shuttle changes"?

  • @venkateshvenky2880
    @venkateshvenky2880 Před 2 lety

    #understood

  • @ayushi10sahu
    @ayushi10sahu Před rokem

    genius

  • @saurabhsangam2737
    @saurabhsangam2737 Před 9 měsíci

    Python solution:
    def isPredecessor(strI, strPrev):
    if len(strI) != (len(strPrev) + 1): return False
    p1 = p2 = 0
    while p1 < len(strI):
    if p2 < len(strPrev) and strI[p1] == strPrev[p2]:
    p2 += 1
    p1 += 1

    return p1 == len(strI) and p2 == len(strPrev)
    class Solution:
    def longestStrChain(self, words: List[str]) -> int:
    words.sort(key=len)
    ans, n = 1, len(words)
    dp = [1] * n
    for i in range(n):
    for prev in range(i):
    if isPredecessor(words[i], words[prev]):
    dp[i] = max(dp[i], dp[prev] + 1)
    ans = max(ans, dp[i])
    return ans

  • @ankitpandey7262
    @ankitpandey7262 Před 2 lety

    As always "understood"

  • @Schodermal
    @Schodermal Před 2 lety +1

    It can be done in N*L right ?

  • @saimhatre89
    @saimhatre89 Před 2 lety

    Understood Sir

  • @googleit2490
    @googleit2490 Před 7 měsíci

    DP Revision:
    Had to watch whole of the video to get the logic ;-;
    Nov'20, 2023 04:42 pm

  • @addityasharma6426
    @addityasharma6426 Před 2 lety

    understood :-)

  • @parthdharmale1118
    @parthdharmale1118 Před 10 měsíci

    i thought of exact same approach but it gives tle on leetcode:(

  • @premranjan4440
    @premranjan4440 Před 2 lety +4

    #include
    using namespace std;
    bool comp(string &s1, string &s2)
    {
    return s1.size() < s2.size();
    }
    bool checkstr(string &s1, string &s2)
    {
    if(s1.size()!=s2.size()+1) return false;
    int first=0, second=0;
    while(first < s1.size() && second < s2.size())
    {
    if(second

  • @RahulSharma-ht2xz
    @RahulSharma-ht2xz Před 11 měsíci

    tooooooooooooo goooooooooooood

  • @aditithakur6226
    @aditithakur6226 Před rokem

    Understood Sir :)

  • @jaykumargupta7307
    @jaykumargupta7307 Před 2 lety

    US

  • @kartikprabakara3126
    @kartikprabakara3126 Před 2 lety

    US

  • @vinamrasangal8436
    @vinamrasangal8436 Před 11 měsíci

    good raj vikram aditya

  • @heavenlyway5824
    @heavenlyway5824 Před 2 lety

    Java Code for this?

    • @devabakare357
      @devabakare357 Před 2 lety

      Check out my solution,
      leetcode.com/problems/longest-string-chain/discuss/2223228/Java-Simple-solution

  • @shashankvashishtha4454

    I have also written same code lol

  • @keertilata20
    @keertilata20 Před 2 lety

    Bhaiya notes updated nhi hai 🥲

  • @deathigniter2155
    @deathigniter2155 Před 28 dny

    Here is my memoization code. which gave me TLE.
    struct compare {
    inline bool operator()(const std::string& first,
    const std::string& second) const
    {
    return first.size() < second.size();
    }
    };
    bool check(string s , string t){
    int n = s.length() , m = t.length() , count = 0 , i = 0 , j = 0;
    if(m != (n + 1)) return false;
    while(i < n){
    if(s[i] == t[j]){
    i++ , j++;
    }
    else{
    count++;
    j++;
    }
    if(count >= 2) return false;
    }
    return true;
    }
    int solve(int i , int prev , vector < string > &v , vector < vector < int > > &dp){
    int n = v.size();
    if(i == n) return 0;
    if(dp[i][prev + 1] != -1) return dp[i][prev + 1];
    int len = solve(i + 1, prev , v, dp); // notTake
    if(prev == -1 || check(v[prev] , v[i])){
    int take = 1 + solve(i + 1 , i , v , dp);
    len = max(len , take);
    }

    return dp[i][prev + 1] = len;
    }
    int longestStrChain(vector& words) {
    int n = words.size();
    compare c;
    sort(words.begin() , words.end() , c);
    vector < vector < int > > dp(n , vector < int > (n + 1 , -1));
    return solve(0 , -1 , words , dp);
    }
    ---------------------------------------------------------Tabulation---------------------------------------------
    int longestStrChain(vector& arr) {
    int n = arr.size() , maxLen = 1;
    compare c;
    sort(arr.begin() , arr.end() , c);
    vector < int > dp(n , 1);
    for(int i = 0; i < n; i++){
    for(int j = 0; j < i; j++){
    if(check(arr[j] , arr[i])){
    dp[i] = max(dp[i] , dp[j] + 1);
    maxLen = max(maxLen , dp[i]);
    }
    }
    }
    return maxLen;
    }

  • @aakashgupta8276
    @aakashgupta8276 Před 7 měsíci

    public static boolean compare(String s1, String s2){
    int first = 0;
    int second = 0;
    int diff = 0;
    while (first < s1.length()){
    if(second < s2.length() && s1.charAt(first) == s2.charAt(second)){
    first++;
    second++;
    }else{
    diff++;
    first++;
    }
    }
    if(first == s1.length() && second == s2.length() && diff == 1){
    return true;
    }else {
    return false;
    }
    }
    // //Check Predecessor by checking LCS and then use LIS logic.
    // public static int lcs(String a, String b, int i, int j, int[][] dp){
    // if(i

  • @rayyansyed2998
    @rayyansyed2998 Před 9 měsíci

    "us"

  • @mriduljain6809
    @mriduljain6809 Před rokem

    "Understood"

  • @harshdhawale2669
    @harshdhawale2669 Před rokem

    khudse kiya
    😃

  • @viratlover6206
    @viratlover6206 Před 2 měsíci

    us

  • @user-up6sl2gq8p
    @user-up6sl2gq8p Před 4 měsíci

    ud

  • @pulkitagrawal1456
    @pulkitagrawal1456 Před 2 lety +1

    it gave a tle on leetcode but passed on code studio

    • @Shubham-or6cs
      @Shubham-or6cs Před 2 lety

      class Solution {
      public:
      static bool comp(string s1, string s2){
      return s1.size()

    • @navinsaikaarthik3790
      @navinsaikaarthik3790 Před rokem

      ​@@Shubham-or6cs check the if condition inside the while loop in checkPossible function. It should be
      " if( second

  • @vanshika4496
    @vanshika4496 Před 9 měsíci

    Working C++ Solution
    class Solution {
    public:
    bool checkPossible(string &s1 , string &s2)
    {
    if (s1.size() != s2.size() + 1) {
    return false;
    }
    else{
    int first=0,second=0;
    while(first < s1.size())
    {
    if(s1[first]==s2[second]){
    first++;second++;
    }
    else {
    first++;
    }
    }
    if (first == s1.size() && second == s2.size()) {
    return true;
    } else {
    return false;
    }
    }
    }
    static bool cmp(string &s1,string &s2)
    {
    return s1.size() < s2.size();
    }

    int longestStrChain(vector& arr) {
    int n=arr.size();
    vector dp(n,1);
    int maxi= 1;
    sort(arr.begin(), arr.end() , cmp);
    for(int i=1;i

  • @shreyass8029
    @shreyass8029 Před rokem

    Us