Palindromes นั้นสนุก แต่สตริงอื่น ๆ บางส่วนเริ่มรู้สึกไม่ดี เราสามารถเปลี่ยนสตริงเหล่านั้นให้เป็นpalindromes ก้อนโดยแยกพวกมันออกเป็นอาร์เรย์ palindromic ของชิ้น
ยกตัวอย่างเช่นสตริง"abcabca"
ไม่ palindrome ถ้าเราอ่านทีละอักขระ แต่เรามีสามวิธีที่แตกต่างกันในการทำมันอ้วน palindrome:
["abcabca"]
["a" "bcabc" "a"]
["a" "bc" "a" "bc" "a"]
อย่างที่คุณเห็น Palindromicness อ้วน ๆ เป็นแนวคิดที่ครอบคลุมมาก สตริงทุกตัวสามารถเปลี่ยนเป็น palindrome แบบก้อนได้อย่างน้อยหนึ่งวิธี
งาน
เขียนโปรแกรมหรือฟังก์ชั่นที่รับสตริงเป็นอินพุตและส่งคืนพาลินโดรมิกของก้อนนั่นคือจำนวนพาร์ติชันที่เป็นอาร์เรย์พาลินโดรมิก
กรณีทดสอบ
OUTPUT | INPUT
--------+---------------------------------------------
1 | ""
1 | "a"
1 | "ab"
2 | "aa"
2 | "aaa"
3 | "abcabca"
4 | "abababab"
28 | "abcabcaabababababcabca"
1 | "bbbbabababbbbababbbaaaaa"
20 | "ababbaaaabababbbaaabbbaa"
5 | "baaabaabababaababaaabbaab"
62 | "bbaaababbabbabbbabaabaabb"
2 | "a man a plan a canal panama"
25 | "ama nap lan aca nal pan ama"
93 | "SATOR AREPO TENET OPERA ROTAS"
976 | "abcabcaabcabcaabcabcaabcabcaabcabcaabcabca"
28657 | "ababababababababababaababababababababababa"
2097152 | "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
กฎเพิ่มเติม
คุณอาจสมมติว่าข้อมูลที่ป้อนจะประกอบด้วยอักขระ ASCII ที่พิมพ์ได้ 42 หรือน้อยกว่าโดยมีตัวเลือกล้อมรอบด้วยตัวคั่นสตริงของภาษาและ / หรือตามด้วยบรรทัดใหม่
สำหรับสตริงอินพุตที่ถูกต้องแต่ละรหัสของคุณจะต้องเสร็จสิ้นในเวลาไม่ถึงหนึ่งนาทีบนเครื่องของฉัน (Intel Core i7-3770, 16 GiB RAM, Fedora 21)
ด้วยอัลกอริธึมที่เพียงพอมันควรจะง่ายที่จะปฏิบัติตามการ จำกัด เวลานี้ อย่างไรก็ตามคุณจะไม่สามารถวนซ้ำทุกพาร์ติชันของสตริงอินพุตได้
หากคุณเลือกที่จะพิมพ์ผลลัพธ์ไปยัง STDOUT มันอาจตามมาด้วยบรรทัดใหม่เดียว
ใช้กฎมาตรฐานของกอล์ฟ