Mô tả bài toán
Cho hai chuỗi s và t cùng độ dài. Kiểm tra xem có tồn tại hoán vị s1 của s và t1 của t sao cho: hoặc s1[i] ≤ t1[i] cho mọi i, hoặc t1[i] ≤ s1[i] cho mọi i.
Ví dụ: s = "vyx", t = "wzx" → True (hoán vị thành s1="vxy", t1="wxz").
Giải thuật (Sắp xếp + So sánh)
- Nếu một chuỗi rỗng: trả về
True. - Sắp xếp cả hai chuỗi.
- Định nghĩa hàm
util(s1, t1): kiểm tras1[i] ≤ t1[i]∀i. - Nếu
util(s, t)đúng: trả vềTrue. - Ngược lại hoán đổi
svàt, kiểm trautil(s, t).
Ví dụ mã Python
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