บทนำ
สำหรับคนที่ไม่ทราบว่า palindrome คือเมื่อสตริงเท่ากับสตริงย้อนหลัง (ยกเว้น interpunction, ช่องว่าง, ฯลฯ ) ตัวอย่างของ palindrome คือ:
abcdcba
หากคุณย้อนกลับมาคุณจะพบกับ:
abcdcba
ซึ่งเป็นแบบเดียวกัน ดังนั้นเราจึงเรียกสิ่งนี้ว่า palindrome เมื่อต้องการ palindromize สิ่งลองมาดูตัวอย่างของสายอักขระ:
adbcb
นี่ไม่ใช่ palindrome เพื่อให้เป็นไปตามนี้เราต้องรวมสตริงที่กลับด้านเข้าไปในสตริงเริ่มต้นที่ด้านขวาของสตริงเริ่มต้นโดยปล่อยให้ทั้งสองเวอร์ชันไม่เป็นอันตราย ยิ่งสั้นยิ่งดี
สิ่งแรกที่เราลองได้คือ:
adbcb
bcbda
^^ ^^
ไม่ใช่อักขระทุกตัวที่ตรงกันดังนั้นจึงไม่ใช่ตำแหน่งที่ถูกต้องสำหรับสตริงที่กลับด้าน เราไปทางขวาหนึ่งก้าว:
adbcb
bcbda
^^^^
สิ่งนี้ยังไม่ตรงกับอักขระทั้งหมด เราไปอีกขั้นทางขวา:
adbcb
bcbda
เวลานี้ตัวละครทุกตัวตรง เราสามารถผสานสตริงทั้งสองออกเหมือนเดิม ผลลัพธ์สุดท้ายคือ:
adbcbda
นี่คือสตริง palindromized
งาน
กำหนดสตริง (มีอย่างน้อยหนึ่งตัว) ที่มีเพียงตัวอักษรตัวพิมพ์เล็ก (หรือพิมพ์ใหญ่ถ้าพอดีกับที่ดีกว่า) เอาท์พุทสตริง palindromized
กรณีทดสอบ
Input Output
abcb abcba
hello hellolleh
bonobo bonobonob
radar radar
hex hexeh
นี่คือโค้ดกอล์ฟดังนั้นการส่งที่มีจำนวนไบต์น้อยที่สุดจะชนะ!
obonobo
จะเป็นวิธีแก้ปัญหาที่ดีกว่าสำหรับกรณีทดสอบ
bono b o nob
เป็นประโยคทั้งหมด ความแตกต่างระหว่างพระเจ้ากับ Bono คืออะไร? พระเจ้าไม่ได้เดินเล่นรอบ ๆ ดับลินแสร้งทำเป็น Bono ;-)