Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình để tìm có bao nhiêu nhóm xoay vòng riêng biệt cho danh sách các từ trong Python

Giả sử chúng ta có nhóm xoay cho một chuỗi chứa tất cả các phép quay duy nhất của nó. Nếu đầu vào là "567" thì giá trị này có thể được xoay thành "675" và "756" và tất cả chúng đều nằm trong cùng một nhóm xoay. Bây giờ nếu chúng ta có danh sách các từ chuỗi, chúng ta phải nhóm từng từ theo nhóm xoay vòng của chúng và tìm tổng số nhóm.

Vì vậy, nếu đầu vào giống như các từ =["xyz", "ab", "ba", "c", "yzx"], thì đầu ra sẽ là 3, vì Có ba nhóm xoay - ["xyz", "yzx"], ["ab", "ba"], ["c"].

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • s:=một tập hợp mới
  • ct:=0
  • đối với mỗi tôi trong từ, hãy thực hiện
    • nếu tôi không thuộc s, thì
      • ct:=ct + 1
    • đối với j trong phạm vi 0 đến kích thước của i, do
      • temp:=chuỗi con của i [từ chỉ số j đến cuối] nối chuỗi con của i [từ đầu đến j])
      • chèn nhiệt độ vào s
  • trả lại ct

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

Ví dụ

 class Giải pháp:def giải (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 ctob =Solution () print (ob.solve (["xyz", "ab", "ba", "c", "yzx"]))  

Đầu vào

 ["xyz", "ab", "ba", "c", "yzx"] 

Đầu ra

 3