สมมติว่าเรามีกลุ่มการหมุนสำหรับสตริงที่มีการหมุนเฉพาะทั้งหมด หากอินพุตเป็นเช่น "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
- ถ้าฉันไม่ได้อยู่ใน 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