I am working on a problem in which I need to merge two string such that one string can be inside other one. The merged string should be of shortest length.
Example:
str1 = "AABAK"
str2 = "HYUAABA"
merged string = "HYUAABAK"
So far I was able to make it work for string which are ending in similar substrings but if they are other way round, my solution isn't working.
Failing for:
str1 = 'ctaagt'
str2 = 'gcta'
expected answer: gctaagt
Solution:
def overlap(str1, str2):
l = min(len(str1), len(str2))
for i in range(l, -1, -1):
if str1.endswith(str2[-i:]):
print('overlap ' + str2[-i:])
return str2[-i:]
str1 = "AABAK"
str2 = "HYUAABA"
for i in range(len(str1), -1, -1):
res = overlap(str1[0:i], str2)
if(res):
print('merge ' + str2+str1[i:])
break
I also want to know if there is any better or cleaner approach to solve this.
Note: str1 is on purpose shorter for my testing purpose.