Now I have one more homework to do now :). I’m very glad if someone help me
This problem can be discribed:
The number X is called “Father of Y” if we delete some numbers in X, we have Y.
Having two non-negative numbers. Your task is finding the smallest number that can be called as “father” of two given numbers.
Example:
With input:
111999111 999111999
We must output: 111999111999.
More example:
12345 12341 => Output is: 123415.
Limitation:
Subtask 1: X,Y <= 10^100
Subtask 2: X,Y <= 10^1000
@betlista Can you help me
I wanted to check it first, but I cannot in a job, check yourself if there is also solution - link, but it seems to me, like simple merge problem…
Let assume you have all characters in two FIFO structres (q1
and q2
).
By simple merge I meant something like:
res = ""
while ( q1 not empty and q2 not empty ) {
char c1 = q1.top() // get reference on first item
char c2 = q2.top()
if ( c1 == c2 )
res += c1
q1.poll() // remove from structure
q2.poll()
else if ( c1 < c2 )
res += c1
q1.poll()
else
res += c2
q1.poll()
}
add all from q1 to res if not empty // only one can be non-empty
add all from q2 to res if not empty
print res
@betlista If this test : 24 72. your code will output 2472, but the answer is 724.
I thought your question won’t be so easy, but I didn’t see that test case… Hm, is such case I’d try to use largest common subsequence together with this merging (updated) at the end…
Can you describe your idea more clearly?