1. 程式人生 > >Morgan and a String

Morgan and a String

思路: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)