ช่วงเวลาท้องถิ่น
ใช้เวลาไม่ว่างเปล่าสตริงs ระยะเวลาในท้องถิ่นของsที่ดัชนีฉันเป็นจำนวนเต็มบวกที่เล็กที่สุดnเช่นที่แต่ละ0 ≤ k <nเรามีs [ผม k +] = s [I-n + K]เมื่อใดก็ตามที่ทั้งสองฝ่ายจะมีการกำหนด อีกวิธีหนึ่งก็คือความยาวน้อยที่สุดของสตริงว่างWดังกล่าวว่าหากการ concatenation WWวางอยู่ติดกับsเพื่อให้สำเนาที่สองของWเริ่มต้นที่ดัชนีฉันของsจากนั้นทั้งสองสตริงเห็นด้วยก็ตามที่พวกเขาซ้อนทับกัน
เป็นตัวอย่างลองคำนวณช่วงเวลาท้องถิ่นของs = "abaabbab"ที่ดัชนี (อิง 0)
- ลองn = 1 : จากนั้นs [2 + 0] ≠ s [2-1 + 0]ดังนั้นตัวเลือกนี้ไม่ถูกต้อง
- ลองn = 2 : จากนั้นs [2 + 0] = s [2-2 + 0]แต่s [2 + 1] ≠ s [2-2 + 1]ดังนั้นนี่จึงไม่ถูกต้อง
- ลองn = 3แล้วs [2 + 0-3]ไม่ได้ถูกกำหนดs [2 + 1] = s [2-3 + 1]และs [2 + 2] = s [2-3 + 2] ดังนั้นช่วงเวลาท้องถิ่นคือ 3
นี่คือการแสดงภาพของช่วงเวลาท้องถิ่นโดยใช้คำจำกัดความที่สองโดยเพิ่มเครื่องหมายอัฒภาคระหว่างสองสำเนาของwเพื่อความชัดเจน:
index a b a a b b a b period
0 a;a 1
1 b a;b a 2
2 a a b;a a b 3
3 a;a 1
4 b b a b a a;b b a b a a 6
5 b;b 1
6 a b b;a b b 3
7 b a;b a 2
โปรดทราบว่าWไม่จำเป็นต้องเป็นย่อยของs สิ่งนี้เกิดขึ้นที่นี่ในกรณีดัชนี -4
งาน
ข้อมูลที่คุณป้อนเป็นสตริงที่ไม่ใช่อักขระที่มีอักขระ ASCII ตัวพิมพ์เล็ก มันสามารถนำมาเป็นรายการของตัวละครหากต้องการ ส่งออกของคุณจะเป็นรายการที่มีระยะเวลาในท้องถิ่นของsในแต่ละดัชนีของมัน ในตัวอย่างข้างต้นแสดงผลที่ถูกต้องจะเป็น[1,2,3,1,6,1,3,2]
จำนวนไบต์ต่ำสุดในแต่ละภาษาชนะ ใช้กฎมาตรฐานของกอล์ฟ
กรณีทดสอบ
a -> [1]
hi -> [1, 2]
www -> [1, 1, 1]
xcxccxc -> [1, 2, 2, 5, 1, 3, 2]
abcbacb -> [1, 4, 7, 7, 7, 3, 3]
nininini -> [1, 2, 2, 2, 2, 2, 2, 2]
abaabbab -> [1, 2, 3, 1, 6, 1, 3, 2]
woppwoppw -> [1, 4, 4, 1, 4, 4, 4, 1, 4]
qwertyuiop -> [1, 10, 10, 10, 10, 10, 10, 10, 10, 10]
deededeededede -> [1, 3, 1, 5, 2, 2, 5, 1, 12, 2, 2, 2, 2, 2]
abababcabababcababcabababcaba -> [1, 2, 2, 2, 2, 7, 7, 7, 7, 2, 2, 2, 19, 19, 5, 5, 2, 5, 5, 12, 12, 2, 2, 2, 7, 7, 5, 5, 2]
;
อยู่ในตัวอย่างของคุณ) นั่นจะกำจัดผู้นำอันดับ 1
qwertyuiop
, Wqwertyuiop
จะมีรุ่นที่หมุนของ ดูเพิ่มเติมตัวอย่างที่ดัชนี 4: Wไม่จำเป็นต้องเป็นย่อยของs