Strings Interleave Problem

Strings Interleave Problem

You are given three strings: a, b and i. Write a function that checks whether i is an interleaving of a and b.

String i is said to be interleaving string a and b, if:

len(i) = len(a) + len(b).

i only contains characters present in a or b.

i contains all characters of a. From a, any character a[index] should be added exactly once in i.

i contains all characters of b. From b, any character b[index] should be added exactly once in i.

Order of all characters in individual strings (a and b) is preserved.

Example One

Input:

a = “123”

b = “456”

i = “123456”

Output: True

Example Two

Input:

a = “AAB”

b = “AAC”

i = “AAAABC”

Output: True

Example Three

Input:

a = “AAB”

b = “AAC”

i = “AAABAC”

Output: True

Notes

Input Parameters: You will be given three strings a, b and i.

Strings can contain:

Small alphabets – a-z

Large alphabets – A-Z

Numbers – 0-9

Output: Return a boolean if i is an interleaving of a and b.

Constraints:

● 0

● 0

Solution

Brute force recursive solution

First character in i should match first character in a or first character in b.

* If it matches first character in a, try matching second character in i with second character in a or first character in b

* If it matches first character in b, try matching second character in i with second character in b or first character in a

* If it matches none of them, terminate with a false

Hence, keep recursing for the rest of the strings. This is an exponential solution, O(2^(len(a)+len(b))) as you can either pick a character from a or a character from b.

Optimal Solution

Convention: str[0 : x] = first x chars of str.

We can say that i[0 : (a_i + b_i)] is an interleaving of a[0 : a_i] and b[0 : b_i], if at least one of the below two is true:

1) – i[0 : (a_i + b_i – 1)] should be an interleaving of a[0 : (a_i – 1)] and b[0 : b_i]

and

– a[ai – 1] == i[ai + bi – 1].

or

2) – i[0 : (a_i + b_i – 1)] should be an interleaving of a[0 : a_i] and b[0 : (b_i – 1)]

and

– b[bi – 1] == i[ai + bi – 1].

We can use DP to keep track of the already calculated values. Have a look at the solution for more details.

Space Complexity:

O(len(a) * len(b))

Time Complexity:

O(len(a) * len(b))


// -------- START --------


bool doStringsInterleave(string a, string b, string i) {
    if (a.length() + b.length() != i.length()){
        return false;
    }
    
    /*
    Convention: str[0 : x] = first x chars of str.
    
    dp[a_i][b_i] =  True if i[0 : (a_i + b_i)] is an interleaving
                    of a[0 : a_i] and b[0 : b_i], else False.
    */
    bool dp[a.length() + 1][b.length() + 1];
    
    for (int ai = 0; ai <= a.length();="" ai++){=""  =""  for="" (int="" bi="0;" <="b.length();" bi++){="" *=""  to="" dp[a_i][b_i]="" be="" true,="" at="" least="" one="" of="" the="" below="" two="" should="" true:=""  1)="" i[0="" :="" (a_i="" +="" b_i="" -="" 1)]="" an="" interleaving=""  of="" a[0="" and="" b[0="" b_i]=""  and="" a[ai="" 1]="=" i[ai="" 1].=""  2)="" a_i]="" (b_i="" b[bi=""  *="" keeps="" track="" above="" mentioned="" #1=""  bool="" dp_ai_min_1_bi="false;" #2="" dp_ai_bi_min_1="false;"  if="" (ai=""> 0){
                dp_ai_min_1_bi = dp[ai - 1][bi] && 
                                 (a[ai - 1] == i[ai + bi - 1]);
            }
            if (bi > 0){
                dp_ai_bi_min_1 = dp[ai][bi - 1] && 
                                 (b[bi - 1] == i[ai + bi - 1]);
            }
            
            // dp[0][0] = Will be true because empty string is an interleaving
            // of two empty strings.
            dp[ai][bi] = (ai == 0 && bi == 0) || 
                         dp_ai_min_1_bi || 
                         dp_ai_bi_min_1;
        }
    }
    
    return dp[a.length()][b.length()];
}


// -------- END --------

Try yourself in the Editor

Note: Input and Output will already be taken care of.

Boggle Solver Problem

Valid Expression Problem

2 Sum In A Sorted Array Problem

Possible To Achieve Target Sum Problem

Sum Zero Problem

Maximum In Sliding Window Problem

IK courses Recommended

Master ML interviews with DSA, ML System Design, Supervised/Unsupervised Learning, DL, and FAANG-level interview prep.

Fast filling course!

Get strategies to ace TPM interviews with training in program planning, execution, reporting, and behavioral frameworks.

Course covering SQL, ETL pipelines, data modeling, scalable systems, and FAANG interview prep to land top DE roles.

Course covering Embedded C, microcontrollers, system design, and debugging to crack FAANG-level Embedded SWE interviews.

Nail FAANG+ Engineering Management interviews with focused training for leadership, Scalable System Design, and coding.

End-to-end prep program to master FAANG-level SQL, statistics, ML, A/B testing, DL, and FAANG-level DS interviews.

Select a course based on your goals

Agentic AI

Learn to build AI agents to automate your repetitive workflows

Switch to AI/ML

Upskill yourself with AI and Machine learning skills

Interview Prep

Prepare for the toughest interviews with FAANG+ mentorship

Register for our webinar

How to Nail your next Technical Interview

25,000+ Professionals Trained

₹23 LPA Average Hike

600+ MAANG+ Instructors

Loading_icon
Loading...
1 Enter details
2 Select slot
By sharing your contact details, you agree to our privacy policy.

Select a Date

Time slots

Time Zone:

Almost there...
Share your details for a personalised FAANG career consultation!
Your preferred slot for consultation * Required
Get your Resume reviewed * Max size: 4MB
Only the top 2% make it—get your resume FAANG-ready!

Registration completed!

🗓️ Friday, 18th April, 6 PM

Your Webinar slot

Mornings, 8-10 AM

Our Program Advisor will call you at this time

Register for our webinar

Transform Your Tech Career with AI Excellence

Transform Your Tech Career with AI Excellence

Join 25,000+ tech professionals who’ve accelerated their careers with cutting-edge AI skills

25,000+ Professionals Trained

₹23 LPA Average Hike 60% Average Hike

600+ MAANG+ Instructors

Webinar Slot Blocked

Register for our webinar

Transform your tech career

Transform your tech career

Learn about hiring processes, interview strategies. Find the best course for you.

Loading_icon
Loading...
*Invalid Phone Number

Used to send reminder for webinar

By sharing your contact details, you agree to our privacy policy.
Choose a slot

Time Zone: Asia/Kolkata

Build AI/ML Skills & Interview Readiness to Become a Top 1% Tech Pro

Hands-on AI/ML learning + interview prep to help you win

Choose a slot

Time Zone: Asia/Kolkata

Build AI/ML Skills & Interview Readiness to Become a Top 1% Tech Pro

Hands-on AI/ML learning + interview prep to help you win

Switch to ML: Become an ML-powered Tech Pro

Explore your personalized path to AI/ML/Gen AI success

Your preferred slot for consultation * Required
Get your Resume reviewed * Max size: 4MB
Only the top 2% make it—get your resume FAANG-ready!
Registration completed!
🗓️ Friday, 18th April, 6 PM
Your Webinar slot
Mornings, 8-10 AM
Our Program Advisor will call you at this time

Get tech interview-ready to navigate a tough job market

Best suitable for: Software Professionals with 5+ years of exprerience
Register for our FREE Webinar

Next webinar starts in

00
DAYS
:
00
HR
:
00
MINS
:
00
SEC

Your PDF Is One Step Away!

The 11 Neural “Power Patterns” For Solving Any FAANG Interview Problem 12.5X Faster Than 99.8% OF Applicants

The 2 “Magic Questions” That Reveal Whether You’re Good Enough To Receive A Lucrative Big Tech Offer

The “Instant Income Multiplier” That 2-3X’s Your Current Tech Salary