Find length of smallest window that contains all the characters of a string in another string

前端 未结 8 1510
不思量自难忘°
不思量自难忘° 2020-12-24 09:05

Recently i have been interviewed. I didn\'t do well cause i got stuck at the following question

suppose a sequence is given : A D C B D A B C D A C D and search seq

8条回答
  •  暖寄归人
    2020-12-24 09:51

    Here's my solution. It follows one of the pattern matching solutions. Please comment/correct me if I'm wrong.

    Given the input string as in the question A D C B D A B C D A C D. Let's first compute the indices where A occurs. Assuming a zero based index this should be [0,5,9].

    Now the pseudo code is as follows.

        Store the indices of A in a list say *orders*.// orders=[0,5,9]
        globalminStart, globalminEnd=0,localMinStart=0,localMinEnd=0;
        for (index: orders)
         {
           int i =index;
           Stack chars=new Stack();// to store the characters
          i=localminStart;
         while(i< length of input string)
           { 
               if(str.charAt(i)=='C') // we've already seen A, so we look for C
               st.push(str.charAt(i));
               i++;
               continue;
               else if(str.charAt(i)=='D' and st.peek()=='C')
               localminEnd=i; // we have a match! so assign value of i to len
               i+=1;
               break;
               else if(str.charAt(i)=='A' )// seen the next A
               break;
        }
         if (globalMinEnd-globalMinStart

    P.S: this is pseudocode and a rough idea. Id be happy to correct it and understand if there's something wrong.

    AFAIC Time complexity -O(n). Space complexity O(n)

提交回复
热议问题