Nhóm xoay vòng của một chuỗi chứa tất cả các phép xoay duy nhất của nó. Ví dụ "567" xoay thành "675", "756" cùng một nhóm. Cho danh sách words, gom nhóm theo nhóm xoay vòng và đếm số nhóm.
Ví dụ, words = ["xyz", "ab", "ba", "c", "yzx"], đầu ra 3 (nhóm: ["xyz","yzx"], ["ab","ba"], ["c"]).
Các bước giải quyết:
s:= tập hợp rỗng.ct := 0.- Duyệt từng
itrongwords:- Nếu
i not in s,ct += 1. - Với
jtừ 0 đến độ dàii-1:temp = i[j:] + i[:j](xoay).- Thêm
tempvàos.
- Nếu
- Trả về
ct.
Ví dụ minh họa
class Solution:
def solve(self, words):
s = set()
ct = 0
for i in words:
if i not in s:
ct += 1
for j in range(len(i)):
s.add(i[j:] + i[:j])
return ct
ob = Solution()
print(ob.solve(["xyz", "ab", "ba", "c", "yzx"]))
Đầu vào
["xyz", "ab", "ba", "c", "yzx"]
Đầu ra
3