https://www.hackerrank.com/challenges/morgan-and-a-string/problem
思路:two pointer,每次贪心选取小的,对于相同的情况,判断后面数组的大小,取小的
但是如果已经是最后一位了,剩下的就是空字符串,是最小的,但是确实不能选的,比如B,BA。如果把第一个string的B拿掉,最后就是BBA,但是拿第二个B就是BAB,一个解决思路就是2个string后面都加上一个字符z(注意是小写的z,不能是Z)
def morganAndString(a, b):
res=[]
i=j=0
na,nb=len(a),len(b)
a,b=a+'z',b+'z'
while i<na and j<nb:
if a[i]<b[j]:
res.append(a[i])
i+=1
elif b[j]<a[i]:
res.append(b[j])
j+=1
elif a[i+1:]<b[j+1:]:
res.append(a[i])
i+=1
else:
res.append(b[j])
j+=1
return ''.join(res)+a[i:na]+b[j:nb]
if __name__ == '__main__':
t = int(input())
for t_itr in range(t):
a = input()
b = input()
result = morganAndString(a, b)
print(result)