JUST LAUNCHED
ATS Resume Checker NEW Get past the bots — see your matched roles and an ATS-ready resume. AI Mock Interview NEW Practice FAANG-style rounds with an AI that asks follow-ups.MOST USED
Resume Analyser Get your resume FAANG-ready — only the top 2% make the shortlist. Salary Analyser Check your FAANG-level pay instantly and see your salary gap. AI Quotient Is your resume AI-ready? Score it in under a minute.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
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.
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 --------
Learn to build AI agents to automate your repetitive workflows
Upskill yourself with AI and Machine learning skills
Prepare for the toughest interviews with FAANG+ mentorship
Time Zone:
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
Learn about hiring processes, interview strategies. Find the best course for you.
ⓘ Used to send reminder for webinar
Time Zone: Asia/Kolkata
Time Zone: Asia/Kolkata
Hands-on AI/ML learning + interview prep to help you win
Explore your personalized path to AI/ML/Gen AI success
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
Join 25,000+ tech professionals who’ve accelerated their careers with cutting-edge AI skills
Join 25,000+ tech professionals who’ve accelerated their careers with cutting-edge AI skills
Webinar Slot Blocked
Time Zone: Asia/Kolkata
Hands-on AI/ML learning + interview prep to help you win
Time Zone: Asia/Kolkata
Hands-on AI/ML learning + interview prep to help you win
Explore your personalized path to AI/ML/Gen AI success
See you there!