Problem of the day
You have two strings “A” and “B”. Your task is to print these two strings in an alternative fashion according to indices i.e. first character of “A”, the first character of “B”, the second character of “A”, the second character of “B” and so on.
Note:If all characters of one string are printed and some characters of other string are remaining, then you have to print the remaining characters of the other string at the end of the resulting string.
Follow Up :
Can you solve the problem in O(N) time complexity and O(1) space complexity?
For Example:
A = “abc” B = “fdh” then answer will be afbdch.
The first line of input contains a single integer T, representing the number of test cases or queries to be run.
Then the T test cases follow.
The first line of each test contains two space-separated strings “A” and “B”.
Output format :
For each test case, print a single line containing these two strings in an alternative fashion according to indices.
Note:
You do not need to print anything. It has already been taken care of. Just implement the given function.
1 <= T <= 10
1 <= |A|, |B| <= 10^5
A and B contains only lower case English characters
Time Limit: 1sec
Note:
You do not need to print anything, it has already been taken care of. Just implement the given function.
2
ab the
ac ninjas
atbhe
ancinjas
For the first test case, A = “ab” and B = “the”
Print the first two characters of both strings in an alternative fashion,
We get “atbh” then finally append "e" to get the answer as “atbhe”
For the second test case, A = “ac” and B = “ninjas”
Printing first two characters of both strings in alternative fashion,
We will get “anci”, now append remaining characters to answer. So the answer will be “ancinjas”.
1
coding ninjas
cnoidnijnags
For the first test case, A = “coding” and B = “ninjas”
Printing both strings in the alternative fashion we will get “cnoidnijnags”.
Think of a recursive solution.
The idea here is to use recursion and append characters one by one from A and B using a variable turn. If turn equals 0 then append character from A and if turn equals 1 then append character from B to answer. If we have appended all characters from one string, then append the remaining characters of the other string to answer.
Steps :
alter(answer, A, B, indexOfA, indexOfB, turn):
O(N+M), where N and M are the length of string A and B respectively.
In the worst case, we are appending each character from A and B which takes O(N+M) time. Hence the overall time complexity will be O(N+M)
O(N+M), where N and M are the length of string A and B respectively.
In the worst case, we need O(N+M) recursion calls. Hence the overall complexity will be O(N+M).