บางครั้งมันเกิดขึ้นที่ในขณะที่พิมพ์ประโยคหนึ่งฉันก็ว้าวุ่นใจและท้ายที่สุดฉันก็พิมพ์คำที่เหมือนกันสองคำสองเท่าของคำสองครั้งติดต่อกัน
เพื่อให้แน่ใจว่าบุคคลอื่นจะไม่ใส่ใจกับสิ่งนี้งานของคุณคือการเขียนโปรแกรมที่ช่วยแก้ปัญหานี้!
งาน
รับสายป้อนข้อมูล (หากเป็นเรื่องเกี่ยวกับภาษาของคุณคุณอาจสมมติว่าเป็นอินพุตแบบ ASCII เท่านั้นที่ไม่มี linefeeds) str
ที่มีที่อยู่ตรงกลางของสตริงย่อยที่เกิดขึ้นสองครั้งติดต่อกันทันทีส่งคืนสตริงด้วยหนึ่งอินสแตนซ์นี้ ลบซับสตริงออกแล้ว
ในกรณีที่มีความเป็นไปได้หลายทางให้ส่งคืนคำตอบที่สั้นที่สุดเท่าที่จะทำได้ (นั่นคือเลือกสตริงย่อยที่ซ้ำกันที่ยาวที่สุดต่อเนื่องกันแล้วเอาอันนั้นออก)
ในกรณีของสตริงย่อยที่มีการทำซ้ำหลายรายการติดต่อกันนานเท่ากันให้ลบอันแรก (นั่นคืออันแรกที่พบเมื่ออ่านผ่านสตริงจากด้านหน้าไปด้านหลัง) หนึ่ง
คุณอาจสมมติว่าอินพุตถูกต้อง (เช่นมีซับสตริงการทำซ้ำติดต่อกันเสมอ) ซึ่งอาจช่วยให้กอล์ฟลงได้
ตัวอย่าง
- การป้อนข้อมูล:
hello hello world
->hello world
ขาออก - การป้อนข้อมูล:
foofoo
->foo
ขาออก (ดังนั้น: ใช่สตริงอาจประกอบด้วยส่วนที่ซ้ำกันสองครั้งเท่านั้น) - การป้อนข้อมูล:
aaaaa
-> เอาท์พุท:aaa
เป็นที่ยาวที่สุดทำซ้ำ substringaa
ติดต่อกันอยู่ที่นี่ - อินพุต:
Slartibartfast
-> นี่ไม่ใช่อินพุตที่ถูกต้องเนื่องจากไม่มีสตริงย่อยที่ซ้ำกันติดต่อกันดังนั้นคุณไม่จำเป็นต้องจัดการกับกรณีนี้ - อินพุต:
the few the bar
-> นี่เป็นอีกอินพุตที่ไม่ถูกต้องเนื่องจากส่วนที่ทำซ้ำควรเป็นไปตามส่วนเดิมทันที ในกรณีนี้the
และthe
ถูกคั่นด้วยอย่างอื่นในระหว่างดังนั้นข้อมูลนี้ไม่ถูกต้อง - การป้อนข้อมูล:
ababcbc
->abcbc
ขาออก ทั้งสองเป็นไปได้สตริงซ้ำติดต่อกันยาวนานที่สุดเป็นและab
bc
ตามที่ab
พบก่อนหน้านี้ในสายนี้เป็นคำตอบที่ถูกต้อง - อินพุต:
Buffalo buffalo Buffalo buffalo buffalo buffalo Buffalo buffalo
. ผลลัพธ์:Buffalo buffalo buffalo buffalo Buffalo buffalo
. (การเปลี่ยนที่ดำเนินการควรเป็นแบบตรงตามตัวพิมพ์ใหญ่ - เล็ก) - การป้อนข้อมูล:
Sometimes it happens that while typing a sentence, I am distracted and I end up typing the same couple of words twice couple of words twice in succession.
->Sometimes it happens that while typing a sentence, I am distracted and I end up typing the same couple of words twice in succession.
ขาออก สตริงย่อยการทำซ้ำที่ยาวที่สุดต่อเนื่องกันเท่านั้นที่จะถูกลบออก
รหัสของคุณควรสั้นที่สุดเนื่องจากเป็นรหัสกอล์ฟดังนั้นคำตอบที่สั้นที่สุดในหน่วยไบต์จะชนะ โชคดี!
p
ในhappens
Sometimes it happens that while typing a sentence, I am distracted and I end up typing the same couple of words twice couple of words twice in succession.
Sometimes it happens that while typing a sentence, I am distracted and I end up typing the same couple of words twice in succession.
เฉพาะการทำซ้ำที่พบที่ยาวที่สุดเท่านั้นที่จะถูกลบ