Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมค้นหาจำนวนกลุ่มการหมุนที่แตกต่างกันสำหรับรายการคำใน Python


สมมติว่าเรามีกลุ่มการหมุนสำหรับสตริงที่มีการหมุนเฉพาะทั้งหมด หากอินพุตเป็นเช่น "567" ก็สามารถหมุนเป็น "675" และ "756" ได้และทั้งหมดจะอยู่ในกลุ่มการหมุนเดียวกัน ตอนนี้ถ้าเรามีรายการคำในสตริง เราต้องจัดกลุ่มแต่ละคำตามกลุ่มการหมุนของคำเหล่านั้น และหาจำนวนกลุ่มทั้งหมด

ดังนั้น หากอินพุตเป็นเหมือนคำ =["xyz", "ab", "ba", "c", "yzx"] ผลลัพธ์จะเป็น 3 เนื่องจากมีกลุ่มการหมุนสามกลุ่ม - ["xyz", "yzx"], ["ab", "ba"], ["c"].

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • s:=ชุดใหม่
  • ct:=0
  • สำหรับแต่ละ i ในคำพูด ทำ
    • ถ้าฉันไม่ได้อยู่ใน s แล้ว
      • ct :=ct + 1
    • สำหรับ j ในช่วง 0 ถึงขนาด i ทำ
      • temp :=สตริงย่อยของ i[จากดัชนี j ถึง end] เชื่อมสตริงย่อยของ i [จากจุดเริ่มต้นถึง j])
      • ใส่อุณหภูมิให้กับ s
  • คืนสินค้า

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

ตัวอย่าง

คลาสโซลูชัน:def แก้ปัญหา(ตัวเอง, คำ):s=set() ct=0 สำหรับฉันในคำ:ถ้าฉันไม่ได้อยู่ใน s:ct+=1 สำหรับ j ในช่วง (len(i)):s.add (i[j:]+i[:j]) return ctob =Solution()print(ob.solve(["xyz", "ab", "ba", "c", "yzx"])) 

อินพุต

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

ผลลัพธ์

3