Giả sử chúng ta có một chuỗi số s. Chúng ta phải kiểm tra xem có sự sắp xếp nào đó mà chúng ta có thể có một cặp ký tự giống nhau hay không và phần còn lại của chuỗi tạo thành bất kỳ số bộ ba nào của cùng một ký tự.
Vì vậy, nếu đầu vào là s ="21133123", thì đầu ra sẽ là True, vì có hai số 2 để tạo thành "22" là cặp và "111", "333" là hai bộ ba.
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
-
d:=danh sách chứa tần số của từng phần tử có trong s
-
với mỗi k trong d, làm
-
d [k]:=d [k] - 2
-
nếu d [i] mod 3 bằng 0 với mọi i trong d, thì
-
trả về True
-
-
d [k]:=d [k] + 2
-
-
trả về Sai
Ví dụ
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn
from collections import Counter def solve(s): d = Counter(s) for k in d: d[k] -= 2 if all(d[i] % 3 == 0 for i in d): return True d[k] += 2 return False s = "21133123" print(solve(s))
Đầu vào
"21133123"
Đầu ra
True