A Recursive solution:

int interleaved(char *s1, char *s2, char *s3) {
     if (s1 == null && s2== null && s3==null) return 1;
     if (s3==null) return 0;
     if (s1 != null && *s1 == *s3) return interleaved(s1+1,s2,s3+1);
     else if (s2 != null && *s2 == *s3) return interleaved(s1, s2+1,s3+1);
     return 0;
}

Iterative solution:
int interleaved(char *s1, char *s2, char *s3) {
     if (s1 == null && s2== null && s3==null) return 1;
     if (s3==null) return 0;
     while (*s3) {
         if (s1 != null && *s1 == *s3) {
             s1++;
         }
         else if (s2 != null && *s2 == *s3) {
             s2++;
         } else {
             return 0;
         }
         s3++;
     }
     return (s1 == null) && (s2 == null) && (s3 == null);
}

Thanks,
Immanuel

On Fri, May 20, 2011 at 8:42 PM, Don <[email protected]> wrote:

> This is the same algorithm as my previous solution. Both produce the
> correct result, but this one does not have tail recursion, so it will
> run faster.
>
> bool interleaved2(char *s1, char *s2, char *s3)
> {
>  while(1)
>  {
>    if (!s1[0] && !s2[0] && !s3[0]) return true;
>    if (s1[0] == s3[0])
>    {
>      if (s2[0] == s3[0])
>      {
>        if (interleaved2(s1+1, s2++,s3+1)) return true;
>      }
>      else ++s1;
>    }
>    else
>    {
>      if (s2[0] == s3[0]) ++s2;
>      else return false;
>    }
>    ++s3;
>   }
> }
>
> On May 19, 1:33 pm, Piyush Sinha <[email protected]> wrote:
> > Design an algorithm to find whether a given string is formed by the
> > interleaving of two given strings or not. e.g. s1= aabccabc s2= dbbabc
> s3=
> > aabdbbccababcc Given s1,s2,s3 design an efficient algorithm to find
> whether
> > s3 is formed from the interleaving of s1 and s2
> >
> > --
> > *Piyush Sinha*
> > *IIIT, Allahabad*
> > *+91-8792136657*
> > *+91-7483122727*
> > *https://www.facebook.com/profile.php?id=100000655377926*
>
> --
> You received this message because you are subscribed to the Google Groups
> "Algorithm Geeks" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> For more options, visit this group at
> http://groups.google.com/group/algogeeks?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Algorithm Geeks" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/algogeeks?hl=en.

Reply via email to