พิจารณาคำจำกัดความต่อไปนี้ที่นำมาจากจำนวนการเรียกใช้ในสตริงโดย W. Rytter โปรดทราบว่าคำสตริงและสตริงย่อยเป็นคำพ้องความหมายคร่าวๆทั้งหมด
การทำงานในสตริงคือเซ็กเมนต์ที่ไม่มีช่วงเวลา (ที่มีช่วงเวลาน้อยที่สุดเท่ากัน) ในสตริง
จุด p ของคำ w คือเลขจำนวนเต็มบวกใด ๆ เช่น w [i] = w [i + p] เมื่อใดก็ตามที่ทั้งสองข้างของสมการนี้ถูกกำหนด อนุญาตต่อ (w) แทนขนาดของคาบที่เล็กที่สุดของ w เราบอกว่าคำ w คือคาบ iff ต่อ (w) <= | w | / 2
x = abcab
สำหรับตัวอย่างพิจารณาสตริง per(abcab) = 3
เป็นx[1] = x[1+3] = a
, x[2]=x[2+3] = b
และไม่มีระยะเวลาที่มีขนาดเล็ก สตริงabcab
จึงไม่เป็นระยะ อย่างไรก็ตามสตริงabab
เป็นระยะตาม (abab) = 2
การรัน (หรือช่วงเวลาสูงสุด) ในสตริง w คือช่วงเวลา [i ... j] กับ j> = i เช่นนั้น
- w [i ... j] เป็นคำที่มีคาบตามระยะเวลา p = ต่อ (w [i ... j])
- มันเป็นสูงสุด อย่างเป็นทางการ w [i-1] = w [i-1 + p] และ w [j + 1] = w [j + 1-p] อย่างไม่เป็นทางการไม่สามารถอยู่ในการรันที่ใหญ่ขึ้นในช่วงเวลาเดียวกัน
แสดงโดย RUNS (w) ชุดของ run of w
ตัวอย่าง
การวิ่งสี่ครั้งatattatt
คือ [4,5] = tt, [7,8] = tt, [1,4] = atat, [2,8] = tattatt
สตริงaabaabaaaacaacac
มีการรัน 7 ต่อไปนี้:
[1,2] = aa, [4,5] = aa, [7,10] = aaaa, [12,13] = aa, [13,16] = acac, [1,8] = aabaabaa, [9 , 15] = aacaaca
ผลลัพธ์ของคุณควรเป็นรายการการดำเนินการ การเรียกใช้แต่ละครั้งควรระบุช่วงเวลาที่แสดง แต่ไม่จำเป็นต้องแสดงผลสตริงย่อย การจัดรูปแบบที่แน่นอนอาจเป็นสิ่งที่สะดวกสำหรับคุณ
ตัวอย่างใช้การจัดทำดัชนี 1 แต่คุณมีอิสระที่จะใช้การจัดทำดัชนี 0 แทนหากสะดวกกว่า
งาน
เขียนโค้ดที่กำหนดสตริง w เอาต์พุต RUNS (w)
ภาษาและอินพุต
คุณสามารถใช้ภาษาใดก็ได้ที่คุณชอบและรับสายป้อนข้อมูลในรูปแบบใดก็ได้ที่สะดวกที่สุด คุณต้องให้โปรแกรมเต็มรูปแบบและคุณควรแสดงตัวอย่างรหัสของคุณที่ทำงานบนอินพุตตัวอย่าง
class A{public static ...}
ทุกครั้งที่ฉันต้องการรหัสกอล์ฟ