Giả sử chúng ta có hai chuỗi s và t có cùng kích thước, chúng ta phải kiểm tra xem có hoán vị nào của s, ví dụ s1, và hoán vị của t, giả sử t1, sao cho:s1 [i] ≤ t1 [i] với tất cả 0 ≤ i
Vì vậy, nếu đầu vào là s ="vyx" t ="wzx", thì đầu ra sẽ là True, vì chúng ta có thể có s1 ="vxy" và t1 ="wxz".
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
- nếu s và t trống, thì
- trả về True
- s:=sắp xếp chuỗi s
- t:=sắp xếp chuỗi t
- Xác định một hàm dùng (). Điều này sẽ mất s1, s2
- đối với tôi trong phạm vi từ 0 đến kích thước là s1, hãy thực hiện
- nếu s1 [i]> t1 [i], thì
- trả về Sai
- nếu s1 [i]> t1 [i], thì
- trả về True
- Từ phương thức chính, hãy làm như sau -
- nếu use (s, t) là true, thì
- trả về True
- hoán đổi s và t
- trả lại sử dụng (s, t)
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
Ví dụ
class Solution: def solve(self, s, t): if not len(s) or not len(t): return True s = sorted(s) t = sorted(t) def util(s1, t1): for i in range(len(s1)): if s1[i] > t1[i]: return False return True if util(s, t): return True s, t = t, s return util(s, t) ob = Solution() s = "vyx" t = "wzx" print(ob.solve(s, t))
Đầu vào
"vyx", "wzx"
Đầu ra
True