Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Chương trình tìm số nhóm xoay vòng khác nhau cho danh sách từ trong Python


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 i trong words:
    • Nếu i not in s, ct += 1.
    • Với j từ 0 đến độ dài i-1:
      • temp = i[j:] + i[:j] (xoay).
      • Thêm temp vào s.
  • 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