Morgan and a String
阿新 • • 發佈:2018-12-11
思路: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)